当我使用@Entity注释一个类并尝试解析依赖关系时,我可以选择两个不同的包之间的包,javax.persistence.Entity和org.hibernate.annotations.EntityJPA实体和Hibernate实体之间的区别
javax包是JPA的实体注释,但为什么有一个hibernate实体注释,它与JPA的注解有什么不同呢?它只是一个允许定义更多属性的扩展吗?
当我使用@Entity注释一个类并尝试解析依赖关系时,我可以选择两个不同的包之间的包,javax.persistence.Entity和org.hibernate.annotations.EntityJPA实体和Hibernate实体之间的区别
javax包是JPA的实体注释,但为什么有一个hibernate实体注释,它与JPA的注解有什么不同呢?它只是一个允许定义更多属性的扩展吗?
org.hibernate.annotations.Entity
有一些额外的属性,javax.persistence.Entity
尚未标准化。额外的功能只有在直接使用hibernate的AnnotationConfiguration
或hibernate是JPA提供程序时才有效。
从
the FAQ:
编辑:新的链接
the specific question:
编辑:新的链接the answer:
我使用@ 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 {
...
}
我不确定差异,但我确定如果您的类路径中有Hibernate jar,那么您使用的是Hibernate JPA。 Hibernate提供了JPA的实现。即使您使用的是使用Hibernate JPA的javax.persistence包。
区别只在于命名。他们可能会在Hibernate包空间和javax包空间中提供相同的类。
@在你的项目中使用,如果假设你想使用我们需要改变的代码JDBC模板或ibatis的org.hibernate.annotations。如果我们使用javax.persistence,则不需要更改代码。这是org.hibernate.annotations和javax persistence之间的主要区别