java – JPA和Hibernate有什么区别?

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

我有使用iBatis的经验,现在我试图学习Hibernate或JPA2。我选择了Pro JPA2书,它一直提及“JPA提供商”。例如:

If you think a feature should be standardized, you should speak up
and request it from your JPA provider

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

>单独使用JPA2可以通过简单地注释我的POJO来从DB获取数据
> JPA2是否应该与“JPA Provider”一起使用,例如TopLink或Hibernate?如果是这样,那么与单独使用Hibernate相比,使用JPA2 Hibernate有什么好处?
>你能推荐一本很好的实用JPA2书。 “Pro JPA2”看起来更像是一本圣经,在JPA2上的引用(直到本书的后半部分,它才进入查询)。有没有一本书,需要一个问题/解决方案的JPA2方法?

最佳答案
因为你的状态JPA只是一个规范,意思是没有实现。您可以使用JPA注释尽可能多地注释类,但是如果没有实现,则不会发生任何事情。认为JPA是必须遵循的指南或接口,而Hibernate的JPA实现是符合JPA规范定义的API的代码,并提供引擎盖下的功能。

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

关于这个答案的更详细的解释读我的blog entry

转载注明原文:java – JPA和Hibernate有什么区别? - 代码日志