JPA和Hibernate有什么区别?[已关闭]

2022-08-31 04:09:42

我知道JPA 2是一个规范,而Hibernate是ORM的工具。另外,我知道Hibernate比JPA 2具有更多的功能。但从实际的角度来看,到底有什么区别呢?

我有使用iBatis的经验,现在我正在尝试学习Hibernate或JPA2。我拿起Pro JPA2书,它一直提到“JPA提供者”。例如:

如果您认为某个功能应该标准化,则应大声疾呼并向JPA提供商请求它

这让我感到困惑,所以我有几个问题:

  • 单独使用JPA2,我可以通过简单地注释我的POJO从DB中获取数据
  • JPA2是否应该与“JPA提供程序”一起使用,例如TopLink或Hibernate?如果是这样,那么与单独使用JPA2相比,或者与单独使用Hibernate相比,使用JPA2 + Hibernate有什么好处?
  • 你能推荐一本实用的JPA2书吗?“Pro JPA2”似乎更像是JPA2上的圣经和参考(直到本书的后半部分才进入查询)。有没有一本书对JPA2采取了问题/解决方案的方法?

答案 1

正如你所说,JPA只是一个规范,这意味着没有实现。您可以使用 JPA 注释尽可能多地对类进行注释,但是如果没有实现,则不会发生任何事情。将JPA视为必须遵循的准则或接口,而Hibernate的JPA实现是满足JPA规范定义的API并提供引擎盖下功能的代码。

当您将Hibernate与JPA一起使用时,您实际上是在使用Hibernate JPA实现。这样做的好处是,您可以将Hibernate的JPA实现换成JPA规范的另一个实现。当您使用直接休眠时,您将锁定到实现中,因为其他ORM可能使用不同的方法/配置和注释,因此您不能只切换到另一个ORM。

有关更详细的描述,请阅读我的博客文章


答案 2

JPA是舞蹈,Hibernate是舞者。


推荐