Для чего используется аннотация @Table в JPA/Hibernate?

«Для чего используется аннотация @Table в JPA/Hibernate?» — вопрос из категории Hibernate, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аннотация @Table в JPA (Jakarta Persistence) используется для связи сущности (Entity) с конкретной таблицей в базе данных. Она позволяет переопределить стандартное имя таблицы и задать дополнительные параметры.

Основные атрибуты аннотации @Table:

  • name: Имя таблицы в БД. Если не указано, используется имя класса сущности.
  • schema: Имя схемы базы данных.
  • catalog: Имя каталога базы данных.
  • uniqueConstraints: Массив аннотаций @UniqueConstraint для определения составных уникальных ограничений на уровне таблицы.

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

@Entity
@Table(name = "user_accounts", schema = "app_data",
       uniqueConstraints = @UniqueConstraint(columnNames = {"email", "username"}))
public class User {
    @Id
    private Long id;
    private String email;
    private String username;
}

Этот код создаст (или отобразится на) таблицу app_data.user_accounts с уникальным ключом по полям email и username.

Правило: Аннотацию @Table можно опустить, если имя таблицы в БД совпадает с именем класса сущности, а другие параметры (схема, каталог) не требуются.