Javax.Persistence和Hibernate.Annotations之间的区别

时间:2014-03-09 18:01:37

标签: java spring hibernate maven annotations

我正在阅读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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

javax。*包由JSR(java规范请求)定义。像接口一样,javax包定义了契约。提供者,如hibernate,提供实现。通过使用javax导入,您可以将自己与特定提供程序分离,并保留在将来切换到其他实现的能力。

这是javax.persistence(https://jcp.org/ja/jsr/all)之外的其他JSR的列表。 javax.persistence(2.0)规范由JSR-317定义。

答案 2 :(得分:2)

javax.persistence是Java EE标准,是标准实现。但是org.hibernate.annotations hibernate特定的实现就像明智的还有其他ORM框架实现,如Toplink,Eclipselink等。明天,如果你想切换框架,它会变得更容易。