Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Какой модификатор делает класс недоступным для наследования?
Какой модификатор делает класс недоступным для наследования?
Anonymous Quiz
3%
static
9%
abstract
63%
final
25%
private
Аннотация @JoinTable
Аннотация @JoinTable используется в Java Persistence API (JPA) для указания таблицы связей (join table) между двумя сущностями в случае отношений @ManyToMany или для кастомизации связей @OneToMany и @ManyToOne. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой связи между таблицами, и позволяет настроить таблицу, которая хранит ассоциации между записями двух таблиц.
Аннотация @JoinTable принимает несколько параметров, которые позволяют настроить таблицу связей:
name (тип: String):
Указывает имя таблицы связей в базе данных.
По умолчанию: если параметр не указан, JPA генерирует имя таблицы на основе имен связанных сущностей (например, Entity1_Entity2).
catalog (тип: String):
Указывает каталог базы данных, в котором находится таблица связей.
По умолчанию: каталог по умолчанию для базы данных.
schema (тип: String):
Указывает схему базы данных, в которой находится таблица связей.
По умолчанию: схема по умолчанию для базы данных.
joinColumns (тип: JoinColumn[]):
Указывает столбцы, которые ссылаются на текущую сущность (владельца связи).
Каждый элемент массива является аннотацией @JoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ текущей сущности.
inverseJoinColumns (тип: JoinColumn[]):
Указывает столбцы, которые ссылаются на связанную сущность.
Каждый элемент массива является аннотацией @JoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ связанной сущности.
uniqueConstraints (тип: UniqueConstraint[]):
Позволяет задать уникальные ограничения для таблицы связей.
Каждый элемент массива является аннотацией @UniqueConstraint, которая настраивает уникальное ограничение.
По умолчанию: уникальные ограничения не заданы.
indexes (тип: Index[]):
Позволяет задать индексы для таблицы связей.
Каждый элемент массива является аннотацией @Index, которая настраивает индекс.
По умолчанию: индексы не заданы.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для столбцов, ссылающихся на текущую сущность.
По умолчанию: не задано.
inverseForeignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для столбцов, ссылающихся на связанную сущность.
По умолчанию: не задано.
Пример использования:
Значения по умолчанию
Если аннотация @JoinTable не указана, JPA генерирует таблицу связей с именем, основанным на именах связанных сущностей, и создает два столбца: один для ссылки на текущую сущность, другой — на связанную сущность.
Жизненный цикл
Применение: Аннотация @JoinTable применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга таблицы связей.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Варианты настройки
Использование name:
Позволяет явно указать имя таблицы связей, что полезно при работе с существующими схемами.
Использование joinColumns и inverseJoinColumns:
Позволяет настроить столбцы, ссылающиеся на текущую и связанную сущности.
Использование uniqueConstraints:
Позволяет задать уникальные ограничения для таблицы связей, что полезно для предотвращения дублирования записей.
Использование indexes:
Позволяет улучшить производительность запросов к таблице связей.
Использование foreignKey и inverseForeignKey:
Позволяет задать определения внешних ключей для таблицы связей.
#Java #Training #Hard #Spring #SpringDataJPA #JoinTable
Аннотация @JoinTable используется в Java Persistence API (JPA) для указания таблицы связей (join table) между двумя сущностями в случае отношений @ManyToMany или для кастомизации связей @OneToMany и @ManyToOne. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой связи между таблицами, и позволяет настроить таблицу, которая хранит ассоциации между записями двух таблиц.
Аннотация @JoinTable принимает несколько параметров, которые позволяют настроить таблицу связей:
name (тип: String):
Указывает имя таблицы связей в базе данных.
По умолчанию: если параметр не указан, JPA генерирует имя таблицы на основе имен связанных сущностей (например, Entity1_Entity2).
catalog (тип: String):
Указывает каталог базы данных, в котором находится таблица связей.
По умолчанию: каталог по умолчанию для базы данных.
schema (тип: String):
Указывает схему базы данных, в которой находится таблица связей.
По умолчанию: схема по умолчанию для базы данных.
joinColumns (тип: JoinColumn[]):
Указывает столбцы, которые ссылаются на текущую сущность (владельца связи).
Каждый элемент массива является аннотацией @JoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ текущей сущности.
inverseJoinColumns (тип: JoinColumn[]):
Указывает столбцы, которые ссылаются на связанную сущность.
Каждый элемент массива является аннотацией @JoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ связанной сущности.
uniqueConstraints (тип: UniqueConstraint[]):
Позволяет задать уникальные ограничения для таблицы связей.
Каждый элемент массива является аннотацией @UniqueConstraint, которая настраивает уникальное ограничение.
По умолчанию: уникальные ограничения не заданы.
indexes (тип: Index[]):
Позволяет задать индексы для таблицы связей.
Каждый элемент массива является аннотацией @Index, которая настраивает индекс.
По умолчанию: индексы не заданы.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для столбцов, ссылающихся на текущую сущность.
По умолчанию: не задано.
inverseForeignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для столбцов, ссылающихся на связанную сущность.
По умолчанию: не задано.
Пример использования:
@ManyToMany
@JoinTable(
name = "user_role",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles;
Значения по умолчанию
Если аннотация @JoinTable не указана, JPA генерирует таблицу связей с именем, основанным на именах связанных сущностей, и создает два столбца: один для ссылки на текущую сущность, другой — на связанную сущность.
Жизненный цикл
Применение: Аннотация @JoinTable применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга таблицы связей.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Варианты настройки
Использование name:
Позволяет явно указать имя таблицы связей, что полезно при работе с существующими схемами.
Использование joinColumns и inverseJoinColumns:
Позволяет настроить столбцы, ссылающиеся на текущую и связанную сущности.
Использование uniqueConstraints:
Позволяет задать уникальные ограничения для таблицы связей, что полезно для предотвращения дублирования записей.
Использование indexes:
Позволяет улучшить производительность запросов к таблице связей.
Использование foreignKey и inverseForeignKey:
Позволяет задать определения внешних ключей для таблицы связей.
#Java #Training #Hard #Spring #SpringDataJPA #JoinTable
Всем доброе утро! 🔆
Как пережили неделю?
За окном уже пахнет весной, поэтому всем рекомендую, если погода позволяет, пойти и подышать воздухом💪
А насчет завтрашней встречи, пока есть сомнения. Я ничего не готовил, а не готовому идти Вам не хочется😉
Если все-таки желаете, можно порешать задачки... Ну пишите в комментах😜
А в остальном всем хорошего дня 🖐
Как пережили неделю?
За окном уже пахнет весной, поэтому всем рекомендую, если погода позволяет, пойти и подышать воздухом
А насчет завтрашней встречи, пока есть сомнения. Я ничего не готовил, а не готовому идти Вам не хочется
Если все-таки желаете, можно порешать задачки... Ну пишите в комментах
А в остальном всем хорошего дня 🖐
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет! 🖐
Решили все-таки сегодня собраться! В 16:00 как всегда в Яндекс.Телемост
@Shikin_Anatoliy попробует написать простой CRUD сервис, а мы ему в случае чего, поможем!
Полезный лайф-кодинг для новичков, приходите будем учиться вместе💪
На фото админ, пишет пет-проект
Ждем всех!✌️
Решили все-таки сегодня собраться! В 16:00 как всегда в Яндекс.Телемост
@Shikin_Anatoliy попробует написать простой CRUD сервис, а мы ему в случае чего, поможем!
Полезный лайф-кодинг для новичков, приходите будем учиться вместе
Ждем всех!
Please open Telegram to view this post
VIEW IN TELEGRAM
Встреча_в_Телемосте_16_03_25_20_32_18_—_запись.webm
665.9 MB
@Shikin_Anatoliy написал неплохой обучающий сервис используя основные аннотации Spring.
Несмотря на то что мы не смогли все это протестировать, видео полезно для новичков в спринг, которые хотят написать свой простой веб-сервис!
@Shikin_Anatoliy большое спасибо за труд!
Please open Telegram to view this post
VIEW IN TELEGRAM
Аннотация @ElementCollection
Аннотация @ElementCollection используется в Java Persistence API (JPA) для маппинга коллекций базовых типов (например, String, Integer) или встраиваемых объектов (аннотированных @Embeddable) в отдельную таблицу базы данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой коллекции, и позволяет сохранять их в отдельной таблице, связанной с основной сущностью.
Аннотация @ElementCollection принимает несколько параметров, которые позволяют настроить маппинг коллекции:
fetch (тип: FetchType):
Указывает стратегию загрузки данных: FetchType.EAGER (жадная загрузка) или FetchType.LAZY (ленивая загрузка).
По умолчанию: FetchType.LAZY.
targetClass (тип: Class<?>):
Указывает класс элементов коллекции, если он не может быть выведен из типа коллекции.
По умолчанию: тип элементов коллекции выводится автоматически.
Дополнительные параметры:
Аннотация @ElementCollection часто используется в сочетании с @CollectionTable для настройки таблицы, в которой хранятся элементы коллекции.
Жизненный цикл
Применение: Аннотация @ElementCollection применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.
Пример использования @CollectionTable с кастомизацией:
Варианты настройки
Использование @CollectionTable:
Позволяет явно указать имя таблицы и столбцы для хранения элементов коллекции.
Использование @Column:
Позволяет указать имя столбца для хранения элементов коллекции.
Использование uniqueConstraints и indexes:
Позволяет задать уникальные ограничения и индексы для таблицы, хранящей элементы коллекции.
Использование fetch:
Позволяет управлять стратегией загрузки данных (жадная или ленивая загрузка).
#Java #Training #Hard #Spring #SpringDataJPA #ElementCollection
Аннотация @ElementCollection используется в Java Persistence API (JPA) для маппинга коллекций базовых типов (например, String, Integer) или встраиваемых объектов (аннотированных @Embeddable) в отдельную таблицу базы данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой коллекции, и позволяет сохранять их в отдельной таблице, связанной с основной сущностью.
Аннотация @ElementCollection принимает несколько параметров, которые позволяют настроить маппинг коллекции:
fetch (тип: FetchType):
Указывает стратегию загрузки данных: FetchType.EAGER (жадная загрузка) или FetchType.LAZY (ленивая загрузка).
По умолчанию: FetchType.LAZY.
targetClass (тип: Class<?>):
Указывает класс элементов коллекции, если он не может быть выведен из типа коллекции.
По умолчанию: тип элементов коллекции выводится автоматически.
Дополнительные параметры:
Аннотация @ElementCollection часто используется в сочетании с @CollectionTable для настройки таблицы, в которой хранятся элементы коллекции.
Жизненный цикл
Применение: Аннотация @ElementCollection применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.
Пример использования @CollectionTable с кастомизацией:
@ElementCollection
@CollectionTable(
name = "phone_numbers",
joinColumns = @JoinColumn(name = "user_id"),
uniqueConstraints = @UniqueConstraint(columnNames = {"user_id", "phone_number"}),
indexes = @Index(columnList = "phone_number")
)
@Column(name = "phone_number")
private Set<String> phoneNumbers;
Варианты настройки
Использование @CollectionTable:
Позволяет явно указать имя таблицы и столбцы для хранения элементов коллекции.
Использование @Column:
Позволяет указать имя столбца для хранения элементов коллекции.
Использование uniqueConstraints и indexes:
Позволяет задать уникальные ограничения и индексы для таблицы, хранящей элементы коллекции.
Использование fetch:
Позволяет управлять стратегией загрузки данных (жадная или ленивая загрузка).
#Java #Training #Hard #Spring #SpringDataJPA #ElementCollection
Что выведет код?
#Tasks
import java.util.HashMap;
public class Task170325 {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put(new String("a"), 1);
map.put(new String("a"), 2);
System.out.println(map.size());
}
}
#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Какой цикл гарантированно выполнится хотя бы один раз?
Какой цикл гарантированно выполнится хотя бы один раз?
Anonymous Quiz
14%
for
7%
while
75%
do-while
5%
foreach
Аннотация @OrderColumn
Аннотация @OrderColumn используется в Java Persistence API (JPA) для указания порядка элементов в коллекции, которая маппится на базу данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой упорядоченные коллекции (например, List), и позволяет сохранять порядок элементов в базе данных.
Аннотация @OrderColumn принимает несколько параметров, которые позволяют настроить маппинг порядка элементов:
name (тип: String):
Указывает имя столбца в базе данных, который будет хранить порядковый индекс элементов коллекции.
По умолчанию: если параметр не указан, JPA использует имя поля или свойства сущности, дополненное суффиксом _ORDER (например, items_ORDER).
nullable (тип: boolean):
Указывает, может ли столбец, хранящий порядковый индекс, иметь значение NULL.
По умолчанию: true.
insertable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы INSERT.
По умолчанию: true.
updatable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы UPDATE.
По умолчанию: true.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
Значения по умолчанию
Если аннотация @OrderColumn не указана, JPA не сохраняет порядок элементов коллекции в базе данных. Порядок элементов может быть потерян при загрузке данных из базы данных.
Жизненный цикл
Применение: Аннотация @OrderColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для восстановления порядка элементов коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов, сохраняя порядок элементов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.
Пример использования @OrderColumn с кастомизацией:
Варианты настройки
Использование name:
Позволяет явно указать имя столбца для хранения порядкового индекса.
Использование nullable:
Позволяет контролировать, может ли столбец, хранящий порядковый индекс, быть NULL.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование @CollectionTable:
Позволяет настроить таблицу, в которой хранятся элементы коллекции, включая уникальные ограничения и индексы.
#Java #Training #Hard #Spring #SpringDataJPA #OrderColumn
Аннотация @OrderColumn используется в Java Persistence API (JPA) для указания порядка элементов в коллекции, которая маппится на базу данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой упорядоченные коллекции (например, List), и позволяет сохранять порядок элементов в базе данных.
Аннотация @OrderColumn принимает несколько параметров, которые позволяют настроить маппинг порядка элементов:
name (тип: String):
Указывает имя столбца в базе данных, который будет хранить порядковый индекс элементов коллекции.
По умолчанию: если параметр не указан, JPA использует имя поля или свойства сущности, дополненное суффиксом _ORDER (например, items_ORDER).
nullable (тип: boolean):
Указывает, может ли столбец, хранящий порядковый индекс, иметь значение NULL.
По умолчанию: true.
insertable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы INSERT.
По умолчанию: true.
updatable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы UPDATE.
По умолчанию: true.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
@ElementCollection
@OrderColumn(name = "item_order")
private List<String> items;
Значения по умолчанию
Если аннотация @OrderColumn не указана, JPA не сохраняет порядок элементов коллекции в базе данных. Порядок элементов может быть потерян при загрузке данных из базы данных.
Жизненный цикл
Применение: Аннотация @OrderColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для восстановления порядка элементов коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов, сохраняя порядок элементов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.
Пример использования @OrderColumn с кастомизацией:
@ElementCollection
@CollectionTable(name = "items", joinColumns = @JoinColumn(name = "user_id"))
@OrderColumn(name = "item_order", columnDefinition = "INT NOT NULL")
private List<String> items;
Варианты настройки
Использование name:
Позволяет явно указать имя столбца для хранения порядкового индекса.
Использование nullable:
Позволяет контролировать, может ли столбец, хранящий порядковый индекс, быть NULL.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование @CollectionTable:
Позволяет настроить таблицу, в которой хранятся элементы коллекции, включая уникальные ограничения и индексы.
#Java #Training #Hard #Spring #SpringDataJPA #OrderColumn
Аннотация @PrimaryKeyJoinColumn
Аннотация @PrimaryKeyJoinColumn используется в Java Persistence API (JPA) для указания связи между сущностями, где первичный ключ одной сущности используется как внешний ключ для другой сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется в наследовании сущностей (стратегия JOINED) или в отношениях @OneToOne, где первичный ключ одной сущности является одновременно и внешним ключом для другой.
Аннотация @PrimaryKeyJoinColumn принимает несколько параметров, которые позволяют настроить маппинг первичного ключа как внешнего ключа:
name (тип: String):
Указывает имя столбца в текущей сущности, который используется как внешний ключ.
По умолчанию: если параметр не указан, JPA использует имя первичного ключа связанной сущности.
referencedColumnName (тип: String):
Указывает имя столбца в целевой сущности, на который ссылается внешний ключ.
По умолчанию: если параметр не указан, JPA использует первичный ключ целевой сущности.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
Значения по умолчанию
Если аннотация @PrimaryKeyJoinColumn не указана, JPA использует имя первичного ключа текущей сущности в качестве имени столбца внешнего ключа и первичный ключ целевой сущности в качестве referencedColumnName.
Жизненный цикл
Применение: Аннотация @PrimaryKeyJoinColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга первичного ключа как внешнего ключа.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг внешних ключей (например, использовать собственные индексы или ограничения), можно использовать параметр foreignKey.
Пример использования foreignKey:
Варианты настройки
Использование name и referencedColumnName:
Позволяет явно указать имена столбцов в базе данных, что полезно при работе с существующими схемами.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование foreignKey:
Позволяет задать имя и другие параметры внешнего ключа, что полезно для управления схемой базы данных.
#Java #Training #Hard #Spring #SpringDataJPA #PrimaryKeyJoinColumn
Аннотация @PrimaryKeyJoinColumn используется в Java Persistence API (JPA) для указания связи между сущностями, где первичный ключ одной сущности используется как внешний ключ для другой сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется в наследовании сущностей (стратегия JOINED) или в отношениях @OneToOne, где первичный ключ одной сущности является одновременно и внешним ключом для другой.
Аннотация @PrimaryKeyJoinColumn принимает несколько параметров, которые позволяют настроить маппинг первичного ключа как внешнего ключа:
name (тип: String):
Указывает имя столбца в текущей сущности, который используется как внешний ключ.
По умолчанию: если параметр не указан, JPA использует имя первичного ключа связанной сущности.
referencedColumnName (тип: String):
Указывает имя столбца в целевой сущности, на который ссылается внешний ключ.
По умолчанию: если параметр не указан, JPA использует первичный ключ целевой сущности.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
@Entity
@PrimaryKeyJoinColumn(name = "employee_id", referencedColumnName = "id")
public class Employee extends Person {
// Дополнительные поля и методы
}
Значения по умолчанию
Если аннотация @PrimaryKeyJoinColumn не указана, JPA использует имя первичного ключа текущей сущности в качестве имени столбца внешнего ключа и первичный ключ целевой сущности в качестве referencedColumnName.
Жизненный цикл
Применение: Аннотация @PrimaryKeyJoinColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга первичного ключа как внешнего ключа.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг внешних ключей (например, использовать собственные индексы или ограничения), можно использовать параметр foreignKey.
Пример использования foreignKey:
@Entity
@PrimaryKeyJoinColumn(
name = "employee_id",
referencedColumnName = "id",
foreignKey = @ForeignKey(name = "fk_employee_person")
)
public class Employee extends Person {
// Дополнительные поля и методы
}
Варианты настройки
Использование name и referencedColumnName:
Позволяет явно указать имена столбцов в базе данных, что полезно при работе с существующими схемами.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование foreignKey:
Позволяет задать имя и другие параметры внешнего ключа, что полезно для управления схемой базы данных.
#Java #Training #Hard #Spring #SpringDataJPA #PrimaryKeyJoinColumn
Что выведет код?
#Tasks
public class Task180325 {
public static void main(String[] args) {
int a = 5;
double b = 2;
Long c = (long) (a / b);
System.out.println(c);
}
}
#Tasks