Java JPA实体和Hibernate实体之间的区别
当我用@Entity注释一个类并尝试解析依赖关系时,我可以在两个不同的包中选择包,javax.persistence.Entity和org.hibernate.annotations.EntityJava JPA实体和Hibernate实体之间的区别,java,hibernate,jpa,Java,Hibernate,Jpa,当我用@Entity注释一个类并尝试解析依赖关系时,我可以在两个不同的包中选择包,javax.persistence.Entity和org.hibernate.annotations.Entity javax包是JPA的实体注释,但是为什么会有hibernate实体注释呢?它与JPA的注释有什么不同呢?它只是一个允许定义更多属性的扩展吗?我不确定它们之间的区别,但我确信如果您的类路径中有Hibernate JAR,那么您正在使用Hibernate JPA。Hibernate提供了JPA的一个实现
javax包是JPA的实体注释,但是为什么会有hibernate实体注释呢?它与JPA的注释有什么不同呢?它只是一个允许定义更多属性的扩展吗?我不确定它们之间的区别,但我确信如果您的类路径中有Hibernate JAR,那么您正在使用Hibernate JPA。Hibernate提供了JPA的一个实现。即使您使用的是javax.persistence包,您也在使用HibernateJPA
区别可能只是在命名上。它们可能在Hibernate包空间和javax包空间中提供相同的类。
org.Hibernate.annotations.Entity
有一些额外的属性,而javax.persistence.Entity
尚未标准化。仅当直接使用hibernate的注释配置
或hibernate是JPA提供程序时,这些额外功能才起作用
发件人:
编辑:新链接:
编辑:新链接:
我使用@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 {
...
}
@如果您想使用JDBC模板或ibatis,我们需要更改代码。如果我们使用javax.persistence,则无需更改代码。这是org.hibernate.annotations和javax持久性之间的主要区别