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

Javax.Persistence和Hibernate.annotation之间的区别,java,spring,hibernate,maven,annotations,Java,Spring,Hibernate,Maven,Annotations,我在上阅读了hibernate教程,他们说为了在hibernate中使用注释,需要具有以下依赖项: hibernate-annotations.jar hibernate-comons-annotations.jar ejb3-persistence.jar 我已经用Maven获取了这些依赖项,但是当它们继续它们的示例时,它们会导入javax.persistence而不是org.hibernate.annotations来使用注释,例如@Entity@Table等 javax.persist

我在上阅读了hibernate教程,他们说为了在hibernate中使用注释,需要具有以下依赖项:

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


javax.persistence
org.hibernate.annotations
之间有什么区别?为什么我觉得我下载了hibernate的注释而没有使用它们呢?

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

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

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

下面是javax.persistence()之外的其他JSR列表。javax.persistence(2.0)规范由定义