Разница между JPA Entity и Hibernate Entity - PullRequest
34 голосов
/ 05 июня 2009

Когда я аннотирую класс с помощью @Entity и пытаюсь разрешить зависимости, я получаю выбор пакета из двух разных пакетов: javax.persistence.Entity и org.hibernate.annotations.Entity

Пакет javax представляет собой аннотацию сущности JPA, но почему существует спящая аннотация аннотации и какая разница с аннотацией JPA? Это просто расширение, позволяющее определять больше атрибутов?

Ответы [ 3 ]

34 голосов
/ 05 июня 2009

org.hibernate.annotations.Entity имеет некоторые дополнительные атрибуты, которые javax.persistence.Entity не стандартизированы. Дополнительные функции будут работать только при прямом использовании AnnotationConfiguration в hibernate или в случае, если hibernate является поставщиком JPA.

от FAQ : изменить: новая ссылка конкретный вопрос : изменить: новая ссылка ответ :

Я использую @ org.hibernate.annotations.Entity и получаю исключение Неизвестная сущность

Всегда импортировать @ javax.persistence.Entity

@org.hibernate.annotations.Entity завершает @ javax.persistence.Entity, но не является заменой

Например, есть атрибут с именем optimisticLock, который сообщает hibernate, использовать ли стандартный столбец версии или сравнивать все столбцы при обновлении. Такое поведение отсутствует в спецификации JPA, поэтому для его настройки необходимо использовать специфическое расширение hibernate, указанное в собственной аннотации.

Как это:

@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
1 голос
/ 24 июня 2011

@org.hibernate.annotations, используемые в вашем проекте, если предполагается, что вы хотите использовать шаблон JDBC или ibatis, нам нужно изменить код. если мы используем javax.persistence, нет необходимости менять код. В этом основное отличие между org.hibernate.annotations и javax persistence

0 голосов
/ 05 июня 2009

Я не уверен насчет различий, но уверен, что если в вашем classpath есть банки Hibernate, вы используете Hibernate JPA. Hibernate обеспечивает реализацию JPA. Даже если вы используете пакет javax.persistence, вы используете Hibernate JPA.

Разница может быть только в именах. Они могут предоставлять одинаковые классы как в пространстве пакета Hibernate, так и в пространстве пакета Javax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...