我对这两个注释API感到困惑。 我用Google搜索并了解JPA是接口,Hibernate注释是实现。 是吗?
但是我应该在我的项目中使用哪一个?哪一个更好,为什么?
答案 0 :(得分:6)
我会选择JPA,因为您可以随时通过更改单行来轻松更改实现(即JPA供应商).Hibernate和其他供应商(如OpenJPA,Toplink)提供了JPA标准的实现。
关于注释,JPA和Hibernate都提供对javax.persistence
注释的支持。
JPA vs Hibernate
a)JPA是您的代码应该使用的持久性Api。
b)JPA Api会将呼叫传递给实际的执行提供者 (例如:Hibernate / TopLink)来做实际的工作。
c)如果你从表演的角度看,那就是 依赖于实际的持久性提供程序(Hibernate / TopLink)而不是 JPA只是一个包装层。
d)如果你从代码依赖性的角度看,JPA会做得更多 因为你的代码依赖于标准的Java Api。
e)如果您使用过Hibernate,那么您会发现某些功能 在JPA中缺少标准查询等。这并不意味着 你不能在你的应用程序中编写条件查询,你需要得到 来自JPA实体经理的会话对象,现在你就像在 hibernate项目。
但现在你的代码依赖于特定的impl(Hibernate)了 转发你可以在JPA(2.0)
中看到更多的东西f)你应该使用JPA:我应该接受,API是干净的 虽然不是你需要的是他们,但是向前迈出了一大步。
答案 1 :(得分:2)
基本上,Hibernate实现了JPA规范,并且还增加了更多特性。所以Hiberate特定的注释是那些添加的功能。所以你使用JPA注释直到你遇到强制你使用Hibernate特定功能的映射,然后你需要使用他们的注释来获得这些功能。