Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA实体和Hibernate实体之间的区别_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA实体和Hibernate实体之间的区别

Java 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的一个实现

当我用@Entity注释一个类并尝试解析依赖关系时,我可以在两个不同的包中选择包,javax.persistence.Entity和org.hibernate.annotations.Entity


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持久性之间的主要区别