一尘不染

Java JPA和Hibernate有什么区别?

java

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

我有使用iBatis的经验,现在我想学习Hibernate或JPA2。我拿起Pro JPA2书籍,并且一直指“ JPA提供者”。例如:

如果您认为某个功能应该被标准化,则应该大声疾呼并向您的JPA提供者提出要求

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

我可以仅使用JPA2注释POJO即可从数据库获取数据
是否应该将JPA2与“ JPA Provider”(例如TopLink或Hibernate)一起使用?如果是这样,那么与单独使用JPA2或单独使用Hibernate相比,使用JPA2 + Hibernate有什么好处?
您能推荐一本实用的JPA2书籍吗?“ Pro JPA2”似乎更像是一本关于JPA2的圣经和参考书目(直到本书的后半部分才进入Queries)。是否有一本书针对JPA2采用问题/解决方法?


阅读 913

收藏
2020-03-04

共1个答案

一尘不染

正如您所说的,JPA只是一个规范,意味着没有实现。您可以根据需要使用JPA批注对类进行批注,但是如果没有实现,则什么也不会发生。可以将JPA视为必须遵循的准则或接口,而Hibernate的JPA实现是符合JPA规范定义的API并提供底层功能的代码。

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

2020-03-04