JPA 实体和休眠实体之间的区别
当我用@Entity注释一个类并尝试解析依赖关系时,我可以在两个不同的包之间选择包,javax.persistence.Entity和org.hibernate.annotations.Entity。
javax包是JPA的实体注释,但是为什么会有休眠实体注释,它与JPA的注释有什么不同呢?它是否只是一个允许定义更多属性的扩展?
当我用@Entity注释一个类并尝试解析依赖关系时,我可以在两个不同的包之间选择包,javax.persistence.Entity和org.hibernate.annotations.Entity。
javax包是JPA的实体注释,但是为什么会有休眠实体注释,它与JPA的注释有什么不同呢?它是否只是一个允许定义更多属性的扩展?
org.hibernate.annotations.Entity
具有一些尚未标准化的额外属性。只有在直接使用休眠或休眠是JPA提供程序时,额外的功能才有效。javax.persistence.Entity
AnnotationConfiguration
来自 常见问题解答: 编辑: 新链接 具体问题: 编辑: 新链接 答案:
我使用@org.hibernate.annotations.Entity并得到一个未知实体异常
始终导入@javax.持久性.实体
@org.hibernate.annotations.Entity 完成@javax.persistence.Entity,但不是替代项
例如,有一个名为 的属性,它告诉休眠是使用标准版本列还是在更新时比较所有列。此行为不在 JPA 规范中,因此为了对其进行配置,必须使用在其自己的注释中找到的休眠特定扩展。optimisticLock
喜欢这个:
@Entity
@org.hibernate.annotations.Entity(optimisticLock=OptimisticLockType.ALL)
public class MyEntity implements Serializable {
...
}
@org.hibernate.annotations在你的项目中使用的,如果你想使用JDBC模板或ibatis,我们需要更改代码。如果我们使用javax.persistence,则无需更改代码。这是 org.hibernate.annotations 和 javax 持久性之间的主要区别。