Разница между сущностью JPA и объектом Hibernate
Когда я комментирую класс с @Entity и пытаюсь разрешить зависимости, я могу выбрать пакет между двумя различными пакетами, javax.persistence.Entity и org.hibernate.nnity.Entity
Пакет javax представляет собой аннотацию сущности JPA, но почему существует сущность-спящая сущность - аннотация и различие в ней есть с аннотацией JPA? Это просто расширение, позволяющее определить больше атрибутов?
Ответы
Ответ 1
org.hibernate.annotations.Entity
имеет некоторые дополнительные атрибуты, которые javax.persistence.Entity
не были стандартизированы. Дополнительные функции будут работать только при непосредственном использовании hibernate AnnotationConfiguration
или если hibernate является поставщиком JPA.
из FAQ:
изменить: новая ссылка конкретный вопрос:
Забастовкa > изменить: новая ссылка ответ:
Я использую @org.hibernate.annotations.Entity и получаю исключение неизвестного объекта
Всегда импортировать @javax.persistence.Entity
@org.hibernate.annotations.Entity завершает @javax.persistence.Entity, но не заменяет
Например, есть атрибут optimisticLock
, который сообщает hibernate, следует ли использовать столбец стандартной версии или сравнивать все столбцы при обновлении. Это поведение не входит в спецификацию JPA, поэтому для его настройки вы должны использовать расширение спящего режима, указанное в их собственной аннотации.
Вот так:
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
Ответ 2
@org.hibernate.nnotes, используемые в вашем проекте, если вы хотите использовать шаблон JDBC или ibatis, нам нужно изменить код. если мы используем javax.persistence, нет необходимости менять код. Это основное различие между org.hibernate.annotations и javax persistence
Ответ 3
Я не уверен в различиях, но я уверен, что если у вас есть Hibernate jars в вашем классе, вы используете Hibernate JPA. Hibernate обеспечивает реализацию JPA. Даже если вы используете пакет javax.persistence, вы используете Hibernate JPA.
Разница может быть только в названии. Они могут предоставлять одинаковые классы как в пространстве пакета Hibernate, так и в пространстве пакета javax.