Java for Beginner
743 subscribers
709 photos
201 videos
12 files
1.15K links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Аннотации @AttributeOverride и @AttributeOverrides

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

@AttributeOverride: Используется для переопределения маппинга одного атрибута.
@AttributeOverrides: Используется для переопределения маппинга нескольких атрибутов.

@AttributeOverride
Аннотация @AttributeOverride принимает два параметра:
name: Имя атрибута встроенного объекта, маппинг которого нужно переопределить.
column: Аннотация
@Column, которая определяет новый маппинг для атрибута.

Пример использования:
@Embedded
@AttributeOverride(name = "street", column = @Column(name = "home_street"))
private Address address;


@AttributeOverrides
Аннотация @AttributeOverrides принимает массив из @AttributeOverride и используется для переопределения маппинга нескольких атрибутов.

Пример использования:
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "home_street")),
@AttributeOverride(name = "city", column = @Column(name = "home_city"))
})
private Address address;


Если аннотации @AttributeOverride или @AttributeOverrides не указаны, JPA использует маппинг, определенный во встроенном классе.

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

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


Кастомизация маппинга:

Если требуется более сложная кастомизация маппинга, можно использовать аннотацию @Embeddable для определения встроенных объектов и @AttributeOverride для их переопределения.

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

@Embeddable
public class Address {
private String street;
private String city;
}

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

@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "home_street")),
@AttributeOverride(name = "city", column = @Column(name = "home_city"))
})
private Address homeAddress;

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


#Java #Training #Hard #Spring #SpringDataJPA #AttributeOverrides #AttributeOverride
👍1
Всем привет!

Уважаемые девушки, которые есть в нашем канале -
с 8 Марта Вас!
💐

Желаю Вам всегда оставаться обворожительными и желанными, чтобы все Ваши программы компилировались без ошибок, а баги фиксились сами 😍

А нам мужики, нужно сегодня порадовать свои вторые половинки, написать им самое лучшее приложение которое будет по шедулеру раз в 10 минут генерировать и отправлять им уникальные комплименты
🏝

Всем хорошего солнечного дня!
😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Ребят!

Не очень удобно спрашивать, но если у кого есть премиум в телеграмме - проголосуйте за канал, чтобы я мог использовать больше возможностей!

Заранее всем спасибо! 🤝

https://t.me/boost/Java_for_beginner_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Еще раз привет! 🖖

Хотел сказать, что если ничего вдруг не изменится, то завтра в 16:00 по МСК, я буду ждать Вас на встрече, в том же месте😄

Начнем создание приложения с подробного разбора создания сущности:

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

Жду всех. Как всегда 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
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