Аннотация @SecondaryTable
Аннотация @SecondaryTable используется в Java Persistence API (JPA) для указания дополнительной таблицы, связанной с основной таблицей сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется, когда сущность должна быть распределена между несколькими таблицами в базе данных, и позволяет маппить поля сущности на столбцы в дополнительной таблице.
Аннотация @SecondaryTable принимает несколько параметров, которые позволяют настроить связь с дополнительной таблицей:
name (тип: String):
Указывает имя дополнительной таблицы в базе данных.
Обязательный параметр.
catalog (тип: String):
Указывает каталог базы данных, в котором находится дополнительная таблица.
По умолчанию: каталог по умолчанию для базы данных.
schema (тип: String):
Указывает схему базы данных, в которой находится дополнительная таблица.
По умолчанию: схема по умолчанию для базы данных.
pkJoinColumns (тип: PrimaryKeyJoinColumn[]):
Указывает столбцы, которые связывают основную таблицу с дополнительной таблицей через первичный ключ.
Каждый элемент массива является аннотацией @PrimaryKeyJoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ основной таблицы.
uniqueConstraints (тип: UniqueConstraint[]):
Позволяет задать уникальные ограничения для дополнительной таблицы.
Каждый элемент массива является аннотацией @UniqueConstraint, которая настраивает уникальное ограничение.
По умолчанию: уникальные ограничения не заданы.
indexes (тип: Index[]):
Позволяет задать индексы для дополнительной таблицы.
Каждый элемент массива является аннотацией @Index, которая настраивает индекс.
По умолчанию: индексы не заданы.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для связи между основной и дополнительной таблицами.
По умолчанию: не задано.
Пример использования:
Если аннотация @SecondaryTable не указана, JPA предполагает, что все поля сущности маппятся на основную таблицу.
Кастомизация маппинга:
Если требуется кастомизировать маппинг таблиц (например, использовать собственные индексы или ограничения), можно использовать параметры uniqueConstraints, indexes и foreignKey.
Пример использования uniqueConstraints и indexes:
Варианты настройки
Использование name:
Позволяет явно указать имя дополнительной таблицы.
Использование pkJoinColumns:
Позволяет настроить столбцы, связывающие основную таблицу с дополнительной таблицей.
Использование uniqueConstraints:
Позволяет задать уникальные ограничения для дополнительной таблицы.
Использование indexes:
Позволяет улучшить производительность запросов к дополнительной таблице.
Использование foreignKey:
Позволяет задать определение внешнего ключа для связи между основной и дополнительной таблицами.
#Java #Training #Hard #Spring #SpringDataJPA #SecondaryTable
Аннотация @SecondaryTable используется в Java Persistence API (JPA) для указания дополнительной таблицы, связанной с основной таблицей сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется, когда сущность должна быть распределена между несколькими таблицами в базе данных, и позволяет маппить поля сущности на столбцы в дополнительной таблице.
Аннотация @SecondaryTable принимает несколько параметров, которые позволяют настроить связь с дополнительной таблицей:
name (тип: String):
Указывает имя дополнительной таблицы в базе данных.
Обязательный параметр.
catalog (тип: String):
Указывает каталог базы данных, в котором находится дополнительная таблица.
По умолчанию: каталог по умолчанию для базы данных.
schema (тип: String):
Указывает схему базы данных, в которой находится дополнительная таблица.
По умолчанию: схема по умолчанию для базы данных.
pkJoinColumns (тип: PrimaryKeyJoinColumn[]):
Указывает столбцы, которые связывают основную таблицу с дополнительной таблицей через первичный ключ.
Каждый элемент массива является аннотацией @PrimaryKeyJoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ основной таблицы.
uniqueConstraints (тип: UniqueConstraint[]):
Позволяет задать уникальные ограничения для дополнительной таблицы.
Каждый элемент массива является аннотацией @UniqueConstraint, которая настраивает уникальное ограничение.
По умолчанию: уникальные ограничения не заданы.
indexes (тип: Index[]):
Позволяет задать индексы для дополнительной таблицы.
Каждый элемент массива является аннотацией @Index, которая настраивает индекс.
По умолчанию: индексы не заданы.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для связи между основной и дополнительной таблицами.
По умолчанию: не задано.
Пример использования:
@Entity
@Table(name = "employee")
@SecondaryTable(
name = "employee_details",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "employee_id")
)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(table = "employee_details")
private String address;
@Column(table = "employee_details")
private String phoneNumber;
// Геттеры и сеттеры
}
Если аннотация @SecondaryTable не указана, JPA предполагает, что все поля сущности маппятся на основную таблицу.
Кастомизация маппинга:
Если требуется кастомизировать маппинг таблиц (например, использовать собственные индексы или ограничения), можно использовать параметры uniqueConstraints, indexes и foreignKey.
Пример использования uniqueConstraints и indexes:
@Entity
@Table(name = "employee")
@SecondaryTable(
name = "employee_details",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "employee_id"),
uniqueConstraints = @UniqueConstraint(columnNames = {"employee_id", "phoneNumber"}),
indexes = @Index(columnList = "phoneNumber")
)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(table = "employee_details")
private String address;
@Column(table = "employee_details")
private String phoneNumber;
// Геттеры и сеттеры
}
Варианты настройки
Использование name:
Позволяет явно указать имя дополнительной таблицы.
Использование pkJoinColumns:
Позволяет настроить столбцы, связывающие основную таблицу с дополнительной таблицей.
Использование uniqueConstraints:
Позволяет задать уникальные ограничения для дополнительной таблицы.
Использование indexes:
Позволяет улучшить производительность запросов к дополнительной таблице.
Использование foreignKey:
Позволяет задать определение внешнего ключа для связи между основной и дополнительной таблицами.
#Java #Training #Hard #Spring #SpringDataJPA #SecondaryTable