我正在阅读tutorialspoint上的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的注释而我没有使用它们?
答案 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等。明天,如果你想切换框架,它会变得更容易。