Аннотации JPA

Hibernate поддерживает аннотации, определенные в спецификации JPA. Использование данных аннотаций позволяет сохранить совместимость программного кода при использовании другой реализации JPA, отличной от Hibernate.

  • @Access — аннотация используется для указания типа доступа связанного класса сущности, сопоставленного супер класса или встраиваемого класса или атрибута сущности.
  • @AssociacionOverride — аннотация используется для переопределения реляционных отношений таких как один к одному, многие к одному, один ко многим, многие ко многим (@OneToOne, @ManyToOne, @OneToMany, @ManyToMany) в классах унаследованных от встраиваемых (embeddable) или сопоставляемых супер классов (mapped superclass).
  • @AssociacionOverrides — аннотация используется для группировки нескольких аннотаций @AssociacionOverride.
  • @AttibuteOverride — аннотация используется для переопределения сопоставляемых атрибутов Entity классов унаследованных от встраиваемых (embeddable) или сопоставляемых супер классов (mapped superclass). Подробнее...
  • @AttibuteOverrides — аннотация используется для группировки нескольких аннотаций @AttributeOverride.
  • @Basic — аннотация используется для сопоставления базового типа атрибута столбцу таблицы базы данных.
  • @Cacheable — аннотация используется для определения хранения объекта в кэше второго уровня в зависимости от установленного свойства [shared-cache-mode] в файле persistence.xml. При значении [shared-cache-mode] - ENABLE SELECTIVE - в кэше второго уровня будут храниться только объекты помеченные аннотацией @Cacheable. При значении [shared-cache-mode] - DISABLE SELECTIVE - в кэше второго уровня будут храниться только объекты не помеченные аннотацией @Cacheable.
  • @CollectionTable — аннотация используется для указания таблицы базы данных, в которой хранятся значения базовой или встраиваемой коллекции типов.
  • @Column — аннотация используется для указания соответствия между атрибутом базовой сущности Entity класса и столбцом таблицы базы данных. Подробнее...
  • @ColumnResult — аннотация @ColumnResult используется в сочетании с аннотациями @SqlResultSetMapping или @ConstructorResult для отображения столбца SQL для заданного запроса SELECT.
  • @ConstructorResult — аннотация используется в сочетании с аннотациями @SqlResultSetMapping для сопоставления столбцов заданного запроса SELECT определенному конструктору объекта.
  • @Convert — аннотация используется для определения реализации AttributeConverter, используемой для преобразования текущего аннотированного базового атрибута. Если AttributeConverter использует autoApply, все атрибуты сущностей с одним и тем же целевым типом будут автоматически преобразованы.
  • @Converter — аннотирование используется, чтобы указать, что текущая реализация AttributeConverter аннотации может использоваться в качестве конвертора основных атрибутов JPA. Если атрибуту autoApply присвоено значение true, поставщик JPA автоматически преобразует все базовые атрибуты с тем же типом Java, как определено текущим преобразователем.
  • @Converts — аннотация используется для группирования нескольких аннотаций @Convert.
  • @DiscriminatorColumn — аннотация используется для указания имени столбца дискриминатора и типа дискриминатора для стратегий наследования (Inheritance) SINGLE_TABLE и JOINED.
  • @DisccriminatorValue — аннотация используется для определения того, какое значение столбца дискриминатора используется для отображения текущего аннотированного объекта для стратегий наследования (Inheritance) SINGLE_TABLE и JOINED.
  • @ElementCollection — аннотация используется для указания коллекции базового или встраиваемого типа.
  • @Embeddable — аннотация используется для указания встраиваемых типов. Как и базовые типы, встраиваемые типы не имеют никакой идентичности, управляемой их собственностью.
  • @Embedded — аннотация используется, чтобы указать, что данный атрибут сущности представляет встраиваемый тип.
  • @EmbeddedId — аннотация используется, чтобы указать, что идентификатор объекта является встраиваемым типом.
  • @Entity — аннотация используется, чтобы указать, что текущий класс представляет тип сущности - Entity класса. В отличие от базовых и встраиваемых типов, типы сущностей имеют идентичность, а их состояние управляется базовым контекстом Persistence. Подробнее...
  • @EntityListeners — аннотация используется для указания массива классов слушателя обратного вызова, которые используются текущей аннотированной сущностью.
  • @EntityResult — аннотация используется с аннотацией @SqlResultSetMapping для сопоставления выбранных столбцов сущности.
  • @Enumerated — аннотация используется, чтобы указать, что атрибут entity представляет перечислимый тип.
  • @ExcludeDefaultListeners — аннотация используется, чтобы указать, что текущая аннотированная сущность пропускает вызов любого слушателя по умолчанию.
  • @ExcludeSuperlassListeners — аннотация используется, чтобы указать, что текущая аннотированная сущность пропускает вызов слушателей, объявленных его суперклассом (классом предком).
  • @FieldResult — аннотация используется с аннотацией @EntityResult для сопоставления выбранных столбцов полям определенного объекта.
  • @ForeignKey  — аннотация используется для указания связанного внешнего ключа сопоставления @JoinColumn. Аннотация @ForeignKey используется только в том случае, если включен инструмент автоматического создания и корректировки схемы базы данных, и в этом случае аннотация позволяет настроить определение базового внешнего ключа.
  • @GeneratedValue — аннотация указывает метод генерации значения идентификатора (автоматически генерируется с использованием столбца идентификации, последовательности базы данных или генератора таблиц). Hibernate поддерживает сопоставление @GeneratedValue даже для идентификаторов UUID.
  • @Id — аннотация указывает идентификатор объекта. Объект должен всегда иметь атрибут идентификатора, который используется при загрузке объекта в данном контексте сохранения.
  • @IdClass — аннотация используется, если текущий объект определяет составной идентификатор. Отдельный класс инкапсулирует все атрибуты идентификатора, которые зеркалируются текущим сопоставлением объектов.
  • @Index — аннотация используется для создания индекса базы данных если включен инструмент автоматического создания и корректировки схемы базы данных.
  • @Inheritance — аннотирование используется для указания стратегии наследования для данной иерархии классов сущностей.
  • @JoinColumn — аннотация используется для указания столбца FOREIGN KEY, используемого при присоединении к ассоциации объекта или встраиваемой коллекции.
  • @JoinColumns — аннотация используется для группирования нескольких аннотаций @JoinColumn, которые используются при сопоставлении объектов или встраиваемой коллекции с использованием составного идентификатора.
  • @JoinTable — аннотация используется для указания таблицы связей между двумя другими таблицами базы данных.
  • @Lob — аннотация используется, чтобы указать, что текущий аннотированный атрибут объекта представляет большой тип объекта.
  • @ManyToMany — аннотация используется для указания отношения объектов базы данных «многие-ко-многим».
  • @ManyToOne — аннотация используется для указания отношения «многие-к-одному» для объектов базы данных.
  • @MapKey — аннотация используется для указания ключа ассоциации java.util.Map, для которой ключ является либо первичным ключом, либо атрибутом объекта, который представляет значение Map.
  • @MapKeyClass — аннотация используется для указания ключа ассоциаций типа java.util.Map.
  • @MapKeyColumn — аннотация используется для указания столбца базы данных, в котором хранится ключ ассоциации java.util.Map, для которой ключ карты является базовым типом.
  • @MapKeyEnumerated — аннотация используется, чтобы указать, что ключ из ассоциации java.util.Map является Java Enum.
  • @MapKeyJoinColumn — аннотация используется, чтобы указать, что ключ ассоциации java.util.Map является ассоциацией сущностей. Ключевой столбец карты - это FOREIGN KEY в таблице связей, который также присоединяет таблицу владельца карты к таблице, в которой находится значение Map.
  • @MapKeyJoinColumns — аннотация используется для группирования нескольких сопоставлений @MapKeyJoinColumn, когда ключ ассоциации java.util.Map использует составной идентификатор.
  • @MapKeyTemporal — аннотация используется, чтобы указать, что ключом ассоциации java.util.Map является @TemporalType (например, DATE, TIME, TIMESTAMP).
  • @MappedSuperlass — аннотация используется, чтобы указать, что текущие атрибуты аннотированного типа наследуются любой Entity сущностью класса-наследника. Подробнее...
  • @MapsId — аннотация используется, чтобы указать, что идентификатор объекта сопоставляется текущей аннотированной ассоциацией @ManyToOne или @OneToOne.
  • @NamedAttributeNode — аннотация используется для указания каждого индивидуального узла атрибута, который необходимо извлечь с помощью диаграммы сущностей.
  • @NamedEntityGraph — аннотация используется для указания графа сущностей, который может использоваться запросом сущности, чтобы переопределить план выборки по умолчанию.
  • @NamedEntityGraphs — аннотация используется для группировки нескольких аннотаций @NamedEntityGraph.
  • @NamedNativeQueries — аннотация используется для объединения нескольких аннотаций @NamedNativeQuery.
  • @NamedNativeQuery — аннотация используется для указания нативного SQL-запроса, который впоследствии можно найти по его имени.
  • @NamedQueries — аннотация используется для группирования нескольких аннотаций @NamedQuery.
  • @NamedQuery — аннотация используется для указания JPQL-запроса, который впоследствии можно найти по его имени.
  • @NamedStoredProcedureQueries — аннотация используется для группирования нескольких аннотаций @NamedStoredProcedureQuery.
  • @NamedStoredProcedureQuery — аннотация используется для указания хранимой процедуры базы данных, которую впоследствии можно найти по его имени.
  • @NamedSubgraph — аннотация используемая для указания субграфа в графе сущностей.
  • @OneToMany — аннотация используется для указания отношения объектов базы данных «один ко многим».
  • @OneToOne — аннотация используется для указания отношения «один к одному» объектов базы данных. Подробнее...
  • @OrderBy — аннотирование используется для указания атрибутов сущности, используемых для сортировки при получении текущей аннотированной коллекции.
  • @OrderColumn — аннотирование используется, чтобы указать, что текущий сборник аннотаций должен быть материализован в базе данных.
  • @PersistenceContext — аннотация используется для указания EntityManager, который необходимо ввести как зависимость.
  • @PersistenceContexts — аннотация используется для группирования нескольких @PersistenceContext аннотаций.
  • @PersonistenceProperty — аннотация используется аннотацией @PersistenceContext для объявления свойств провайдера JPA, которые передаются в базовый контейнер при создании экземпляра EntityManager.
  • @PersonistenceUnit — аннотация используется для указания EntityManagerFactory, которая должна быть введена как зависимость.
  • @PersonistenceUnits — аннотация используется для группирования нескольких аннотаций @PersistenceUnit.
  • @PostLoad — аннотация используется для указания метода обратного вызова, который срабатывает после загрузки объекта.
  • @PostPersist — аннотация используется для указания метода обратного вызова, который срабатывает после сохранения объекта.
  • @PostRemove — аннотация используется для указания метода обратного вызова, который срабатывает после удаления объекта.
  • @PostUpdate — аннотация используется для указания метода обратного вызова, который срабатывает после обновления объекта.
  • @PrePersist — аннотация используется для указания метода обратного вызова, который срабатывает до того, как объект будет сохранен.
  • @PreRemove — аннотация используется для указания метода обратного вызова, который срабатывает до удаления объекта.
  • @PreUpdate — аннотация используется для указания метода обратного вызова, который срабатывает до обновления объекта.
  • @PrimaryKeyJoinColumn — аннотация используется, чтобы указать, что столбец первичного ключа текущего аннотированного объекта также является внешним ключом к некоторому другому объекту (например, таблице базового класса в стратегии наследования JOINED, первичной таблице во вторичном сопоставлении таблиц или родительская таблица в отношении @OneToOne).
  • @PrimaryKeyJoinColumns — аннотация используется для группирования нескольких аннотаций @PrimaryKeyJoinColumn.
  • @QueryHint — аннотация используется для указания подсказки поставщика JPA, используемой аннотацией @NamedQuery или аннотацией @NamedNativeQuery.
  • @SecondaryTable — аннотация используется для указания вторичной таблицы для текущего аннотированного объекта Entity класса.
  • @SecondaryTables — аннотация используется для группирования нескольких аннотаций @SecondaryTable.
  • @SequenceGenerator — аннотация используется для указания последовательности базы данных, используемой генератором идентификатора текущего аннотированного объекта.
  • @SqlResultSetMapping — аннотация используется для указания отображения ResultSet собственного SQL-запроса или хранимой процедуры.
  • @SqlResultSetMappings — аннотация является аннотацией нескольких групп @SqlResultSetMapping.
  • @StoredProcedureParameter — аннотация используется для указания параметра @NamedStoredProcedureQuery.
  • @Table — аннотация используется для указания первичной таблицы текущего аннотированного объекта Entity класса. Подробнее...
  • @TableGenerator — аннотация используется для указания таблицы базы данных, используемой генератором идентификаторов текущего аннотированного объекта Entity класса.
  • @Temporal — аннотация используется для указания TemporalType текущего аннотированного атрибута объекта java.util.Date или java.util.Calendar.
  • @Transient — аннотация используется для указания того, что данный атрибут сущности не должен сохраняться.
  • @UniqueConstraint — аннотация используется для указания уникального ограничения, которое должно быть включено генератором автоматической схемы для первичной или вторичной таблицы, связанной с текущим аннотированным объектом.
  • @Version — аннотация используется для указания атрибута версии сущности Entity класса, используемого для оптимистической блокировки.