Hibernate или JPA для использования

Я использую Hibernate в наших проектах и ​​настройках, основанных на аннотациях, для объектов HBO для хранения домена Hibernate. Для конфигурации на основе аннотаций мы имеем две опции

  • Аннотации, основанные на JPA, с использованием javax.persistence.*
  • Использовать Hibernate Native Annotations org.hibernate.annotations.*

В настоящее время мы используем конфигурацию аннотаций на основе JPA для наших POJO файлов и встроенного API Hibernate, таких как SessionFactory, Session и т.д. для открытия сеанса и выполнения операций с БД.

Нужна ваша помощь в следующих вещах,

Ответы

Ответ 1

Hibernate предоставляет одну из реализаций JPA. Если вы используете чисто код JPA в своем коде, вы можете перейти к другой реализации, если возникнет требование. Например, EclipseLink/TopLink и OpenJPA являются реализациями, которые могут потребоваться для другого клиента. Полный список реализаций здесь.

Если вы вынуждены использовать любые экзотические функции, предоставляемые спящим режимом, не входящие в спецификацию JPA, вам следует перейти на спящие конкретные API в базе кода. Связанная дискуссия с форума hibernate здесь.

Ответ 2

Мы смешали некоторые из этих аннотаций, так как с версией hibernate мы работали в те дни, некоторые функции в то время не были доступны в спецификации JPA. Например, для хранения логического значения в виде "Y" или "N" на БД вы имеете типы спящего режима, которые вы можете использовать. Но в то время такая спецификация отсутствовала в спецификации JPA. Сейчас я не знаю о статусе. Также для удаления сирот также в те дни JPA не было этой функции, но теперь я верю, что они предоставляют атрибут orphanRemoval по вашим параметрам каскада. Также у вас есть определенные функции, такие как @BatchSize, чтобы повысить производительность по отношению к сумкам. Я не знаю, доступны ли такие функции в спецификации JPA.

По моему опыту, смешение и совпадение с другими точками от обоих было бы полезно, учитывая, что вам не нужно переключаться с одного ORM на другой.