Javax.Persistence和Hibernate.Annotations的区别

9

我在tutorialspoint上阅读了Hibernate教程,他们说为了使用Hibernate的注解功能,需要以下依赖项:

hibernate-annotations.jar
hibernate-comons-annotations.jar 
ejb3-persistence.jar

我已经使用Maven获取了这些依赖项,但是当他们继续示例时,他们导入javax.persistence而不是org.hibernate.annotations来使用注释,例如@Entity @Table等...

javax.persistenceorg.hibernate.annotations之间有什么区别?为什么我觉得我下载了Hibernate的注释却没有使用它们?
3个回答

13
您使用javax.persistence来保持实现无关性(即您可以稍后更改为使用不同的JPA实现)。如果您只想使用Hibernate,可以使用org.hibernate注释。但最好只导入javax类。然后Hibernate将提供实现,但可以通过切换不同的依赖项来替换。

6
javax.*包由JSR(Java规范请求)定义。与接口类似,javax包定义了契约。供应商(如Hibernate)提供实现。通过使用javax导入,您可以将自己与特定的供应商解耦,并保留将来切换到不同实现的能力。
这是其他JSR列表,超出了javax.persistence(https://jcp.org/ja/jsr/all)。javax.persistence(2.0)规范由JSR-317定义。

3

javax.persistence是Java EE标准的标准实现。而org.hibernate.annotations是Hibernate特定的实现,类似地,还有其他ORM框架实现,如Toplink、Eclipselink等。如果明天你想要切换框架,那将变得更加容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接