Java for Beginner
686 subscribers
588 photos
161 videos
12 files
905 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Изучаем Entity, настройки и почти все аннотации. Встреча от 09.03.2025

Запись встречи -
YOUTUBE
RUTUBE

Что мы рассмотрели в видео:

🔜 Узнали что такое сущности и зачем они вообще нужны.
🔜 Прошлись по основным свойствам и настройкам.
🔜 Изучили на примере основные аннотации, пощупаем их в работе.
🔜 Написали мини-приложение в котором все это протестировали.
🔜 Проверили работоспособность через Postman

Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!

Всем хорошего настроения и терпения при просмотре! 🍸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📌 Факт дня:

А вы знали, что первый "модем" работал со скоростью 110 бит/с?

Bell 101, выпущенный в 1958 году, передавал данные медленнее, чем человек читает текст, но стал началом эпохи онлайн-соединений.


Proof

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤯1
📌 Цитата дня: Питер Норвиг

"Больше данных побеждает лучший алгоритм."


Питер Норвиг, директор по исследованиям Google, сказал это в 2008 году на конференции по машинному обучению, подчеркивая важность объема данных.


Почитать короткую биографию
И немного хабра

#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Аннотация @Embeddable

Аннотация @Embeddable используется в Java Persistence API (JPA) для обозначения класса, который может быть встроен (embedded) в другую сущность. Класс, помеченный этой аннотацией, не является самостоятельной сущностью, но его поля могут быть включены в таблицу сущности, которая его использует. Аннотация находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE).

Аннотация
@Embeddable не принимает параметров. Она просто указывает, что класс может быть встроен в другую сущность.

Пример использования:
@Embeddable
public class Address {
private String street;
private String city;
private String zipCode;
}


Класс, помеченный @Embeddable, по умолчанию не имеет отдельной таблицы в базе данных. Его поля включаются в таблицу сущности, которая его использует.
Если встроенный класс содержит поля, которые сами являются сущностями или коллекциями, их маппинг должен быть явно настроен с использованием других аннотаций JPA (например, @OneToMany, @ManyToOne).

Жизненный цикл

Применение: Аннотация @Embeddable применяется на этапе маппинга сущности JPA. Она определяет, что класс может быть встроен в другую сущность.
Инициализация: При загрузке сущности из базы данных JPA создает экземпляр встроенного класса и заполняет его данными.
Уничтожение: При сохранении сущности в базу данных JPA сохраняет данные встроенного класса в таблицу сущности.


Кастомизация маппинга:
Если требуется переопределить маппинг полей встроенного класса, можно использовать аннотации
@AttributeOverride и @AttributeOverrides в сущности, которая использует встроенный класс.

Варианты настройки

Использование встроенных классов:
Подходит для случаев, когда требуется повторно использовать группу полей в нескольких сущностях.
Упрощает код, так как не требуется дублировать поля в разных сущностях.


Переопределение маппинга:
Позволяет гибко настраивать маппинг полей встроенного класса для каждой сущности, используя @AttributeOverride и @AttributeOverrides.

Использование встроенных классов с коллекциями:

Если встроенный класс содержит коллекции, их маппинг должен быть явно настроен с использованием аннотаций JPA (например, @ElementCollection).

Пример использования
@Embeddable
public class Address {
private String street;
private String city;
private String zipCode;
}

@Entity
public class User {
@Id
private Long id;

@Embedded
private Address homeAddress;

@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "work_street")),
@AttributeOverride(name = "city", column = @Column(name = "work_city"))
})
private Address workAddress;
}


В этом примере:

Класс Address помечен как @Embeddable и может быть встроен в сущность User.
Поля homeAddress и workAddress включаются в таблицу User.
Для workAddress используется переопределение маппинга с помощью
@AttributeOverrides.

#Java #Training #Hard #Spring #SpringDataJPA #Embeddable
1
Что выведет код?

public class Task100325 {
public static void print(int a) {
System.out.println("int: " + a);
}

public static void print(double a) {
System.out.println("double: " + a);
}
public static void print(float a) {
System.out.println("float: " + a);
}

public static void main(String[] args) {
print(10);
print(10L);
}
}


#Tasks
👍3
Из наставления "Юный Девопс" 😂

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
Вопросы с собеседования 👩‍💻

Что произойдёт, если не указать модификатор доступа для метода?
Anonymous Quiz
5%
Метод станет private
21%
Метод станет public
61%
Метод станет default
12%
Ошибка компиляции
👍1
Аннотация @Embedded

Аннотация @Embedded используется в Java Persistence API (JPA) для указания того, что поле сущности является встроенным объектом (embedded object). Встроенный объект — это класс, помеченный аннотацией @Embeddable, который не является самостоятельной сущностью, но его поля включаются в таблицу сущности, которая его использует. Аннотация @Embedded находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE).

Аннотация @Embedded не принимает параметров. Она просто указывает, что поле сущности является встроенным объектом.

Пример использования:
@Entity
public class User {
@Id
private Long id;

@Embedded
private Address address;
}


Если аннотация @Embedded не указана, JPA автоматически распознает встроенные объекты, если их класс помечен аннотацией @Embeddable.
Поля встроенного объекта включаются в таблицу сущности, которая его использует.

Жизненный цикл

Применение: Аннотация @Embedded применяется на этапе маппинга сущности JPA. Она определяет, что поле является встроенным объектом.
Инициализация: При загрузке сущности из базы данных JPA создает экземпляр встроенного объекта и заполняет его данными.
Уничтожение: При сохранении сущности в базу данных JPA сохраняет данные встроенного объекта в таблицу сущности.


Кастомизация маппинга:
Если требуется переопределить маппинг полей встроенного объекта, можно использовать аннотации @AttributeOverride и @AttributeOverrides в сущности, которая использует встроенный объект.

Варианты настройки

Использование встроенных объектов:

Подходит для случаев, когда требуется повторно использовать группу полей в нескольких сущностях.
Упрощает код, так как не требуется дублировать поля в разных сущностях.


Переопределение маппинга:
Позволяет гибко настраивать маппинг полей встроенного объекта для каждой сущности, используя @AttributeOverride и @AttributeOverrides.

Использование встроенных объектов с коллекциями:
Если встроенный объект содержит коллекции, их маппинг должен быть явно настроен с использованием аннотаций JPA (например, @ElementCollection).

#Java #Training #Hard #Spring #SpringDataJPA #Embedded
👍1
📌 Факт дня:

А вы знали, что первый «графический процессор» появился в 1981 году?

IBM CGA (адаптер цветной графики) был первым шагом к обработке графиков на ПК, поддерживая до 16 цветов при разрешении 640x200.


И обязательно история

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📌 Цитата дня: Хеди Ламар

"Частотная модуляция — ключ к безопасности связи."


Ламар, актриса и изобретательница, запатентовала технологию частотной модуляции в 1942 году, которая легла в основу Wi-Fi.

Почитать короткую биографию
И более подробно о том на что способна женщина, когда ей становится скучно

#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Аннотация @Inheritance

Аннотация @Inheritance используется в Java Persistence API (JPA) для определения стратегии наследования сущностей. Она позволяет указать, как сущности, связанные отношениями наследования, будут отображаться на таблицы базы данных. Аннотация находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE).

Аннотация @Inheritance принимает один параметр — strategy, который определяет стратегию наследования.

Параметр strategy может принимать одно из следующих значений:
InheritanceType.SINGLE_TABLE:
Все сущности в иерархии наследования отображаются на одну таблицу.
Для различения типов сущностей используется дискриминаторный столбец (discriminator column).

Пример:
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class Vehicle { ... }


InheritanceType.JOINED:
Каждая сущность в иерархии наследования отображается на отдельную таблицу.
Общие поля хранятся в таблице родительской сущности, а уникальные поля — в таблицах дочерних сущностей.


Пример:
@Inheritance(strategy = InheritanceType.JOINED)
public class Vehicle { ... }


InheritanceType.TABLE_PER_CLASS:
Каждая сущность в иерархии наследования отображается на отдельную таблицу, и все поля (включая унаследованные) хранятся в таблице дочерней сущности.

Пример:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Vehicle { ... }


Если аннотация
@Inheritance не указана, JPA по умолчанию использует стратегию InheritanceType.SINGLE_TABLE.

Жизненный цикл

Применение: Аннотация
@Inheritance применяется на этапе маппинга сущности JPA. Она определяет, как сущности в иерархии наследования будут отображаться на таблицы базы данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанную стратегию наследования для создания объектов.
Уничтожение: При сохранении сущности в базу данных JPA использует указанную стратегию наследования для записи данных.


Кастомизация стратегии наследования:
Если требуется изменить стратегию наследования для конкретной иерархии сущностей, можно использовать аннотацию @Inheritance с нужным значением параметра strategy.

Пример использования

Стратегия SINGLE_TABLE
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
@DiscriminatorValue("TRUCK")
public class Truck extends Vehicle {
private double payloadCapacity;
}


Стратегия JOINED
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
public class Truck extends Vehicle {
private double payloadCapacity;
}
Стратегия TABLE_PER_CLASS
java
Copy
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
public class Truck extends Vehicle {
private double payloadCapacity;
}


#Java #Training #Hard #Spring #SpringDataJPA #Inheritance
👍2
Что выведет код?

public class Task110325 {
public static void main(String[] args) {
String str = "Hello, Java!";
String result = str.substring(str.indexOf("J"), str.length() - 2).toUpperCase();
System.out.println(result);
}
}


#Tasks
👍2
Варианты ответа:
Anonymous Quiz
18%
JAVA
55%
JAV
14%
HELLO, JAVA
14%
RuntimeException
👍4
Прикол в том что лечить их он не умеет 🤪 🤣

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👍1
Вопросы с собеседования 👩‍💻

Что такое null в Java?
Anonymous Quiz
8%
Число 0
11%
Пустая строка
79%
Отсутствие ссылки на объект
2%
Выполнение ошибки
👍4
Аннотации @DiscriminatorColumn и @DiscriminatorValue

Аннотации @DiscriminatorColumn и @DiscriminatorValue используются в Java Persistence API (JPA) для работы с наследованием сущностей, когда применяется стратегия InheritanceType.SINGLE_TABLE. Они помогают различать типы сущностей в одной таблице базы данных.

@DiscriminatorColumn: Определяет столбец в таблице базы данных, который хранит информацию о типе сущности.
@DiscriminatorValue: Указывает значение, которое будет храниться в дискриминаторном столбце для конкретной сущности.

Обе аннотации находятся в пакете javax.persistence (или jakarta.persistence в Jakarta EE).


Аннотация @DiscriminatorColumn

Аннотация @DiscriminatorColumn принимает следующие параметры:

name: Имя дискриминаторного столбца в таблице базы данных.
По умолчанию: "DTYPE"
.

discriminatorType: Тип данных дискриминаторного столбца.

Может принимать одно из следующих значений:
DiscriminatorType.STRING: Столбец хранит строковые значения (по умолчанию).
DiscriminatorType.CHAR: Столбец хранит символьные значения.
DiscriminatorType.INTEGER: Столбец хранит целочисленные значения.
По умолчанию: DiscriminatorType.STRING.


columnDefinition: Определение столбца в SQL (например, тип данных и ограничения).
По умолчанию: генерируется автоматически.

length: Длина столбца (актуально для строковых типов).
По умолчанию: 31.


Пример использования:
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "vehicle_type", discriminatorType = DiscriminatorType.STRING, length = 20)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}


Аннотация @DiscriminatorValue

Аннотация @DiscriminatorValue принимает один параметр — value, который определяет значение, хранимое в дискриминаторном столбце для конкретной сущности.

Пример использования:

@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
@DiscriminatorValue("TRUCK")
public class Truck extends Vehicle {
private double payloadCapacity;
}


Если @DiscriminatorColumn не указана, JPA по умолчанию создает столбец с именем "DTYPE" и типом DiscriminatorType.STRING.
Если
@DiscriminatorValue не указана, JPA использует имя класса сущности в качестве значения.

Жизненный цикл

Применение: Аннотации применяются на этапе маппинга сущности JPA. Они определяют, как сущности будут различаться в одной таблице.
Инициализация: При загрузке сущности из базы данных JPA использует значение дискриминаторного столбца для определения типа сущности.
Уничтожение: При сохранении сущности в базу данных JPA записывает значение дискриминаторного столбца.


Кастомизация дискриминаторного столбца:

Если требуется изменить параметры дискриминаторного столбца (например, имя или тип), можно использовать аннотацию @DiscriminatorColumn с нужными значениями.

Пример использования

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "vehicle_type", discriminatorType = DiscriminatorType.STRING, length = 20)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
@DiscriminatorValue("TRUCK")
public class Truck extends Vehicle {
private double payloadCapacity;
}


В этом примере:
Сущности Car и Truck наследуются от Vehicle.
В таблице Vehicle создается столбец vehicle_type, который хранит значения "CAR" для автомобилей и "TRUCK" для грузовиков.


#Java #Training #Hard #Spring #SpringDataJPA #DiscriminatorColumn #DiscriminatorValue
👍3
📌 Факт дня:

А вы знали, что "Git" создали из-за ссоры?

Линус Торвальдс написал прообраз Git в 2005 году за две недели после конфликта с разработчиками BitKeeper, чтобы управлять кодом Linux.


Немного истории

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6