为了账号安全,请及时绑定邮箱和手机立即绑定

JPA和Hibernate有什么区别?

/ 猿问

JPA和Hibernate有什么区别?

慕婉清6462132 2019-07-17 19:04:40

JPA和Hibernate有什么区别?

我知道JPA 2是一种规范,Hibernate是ORM的工具。另外,我知道Hibernate比JPA 2有更多的特性。但是从实际的角度来看,真正的区别是什么呢?

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

如果您认为某项功能应该标准化,您应该大声说出来,并向您的jpa提供程序提出要求。

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

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


查看完整描述

3 回答

?
拉莫斯之舞

正如您所述,JPA只是一个规范,意味着没有实现。您可以使用JPA注释来注释您的类,但是如果没有实现,什么也不会发生。将JPA视为必须遵循的指南或接口,而Hibernate的JPA实现是符合JPA规范定义的API并提供底层功能的代码。

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

有关更详细的描述,请阅读博客条目.


查看完整回答
反对 回复 2019-07-17
?
宝慕林4294392

如果没有对语言的历史理解和对JCP的理解,有些事情就太难理解了。

通常会有第三方开发执行函数的包,或者填补不是官方JDK一部分的空白。由于各种原因,该函数可能通过JCP(JavaCommunityProcess)成为JavaJDK的一部分。

Hibernate(2003年)提供了一种抽象SQL的方法,并允许开发人员更多地考虑持久化对象(ORM)。将实体对象通知Hibernate,它会自动生成持久化策略。Hibernate提供了这样做的实现,API通过XML配置或注释来驱动实现。

现在的根本问题是,您的代码会与特定的供应商(Hibernate)紧密耦合,因为很多人认为应该更通用。因此,需要一个通用的持久性API。

同时,带有Hibernate和其他ORM工具供应商大量输入的JCP正在开发JSR 220(Java规范请求),这导致了JPA1.0(2006),并最终开发了JSR 317,即JPA2.0(2009)。这些是通用Java持久性API的规范。API是作为一组接口在JDK中提供的,这样您的类就可以依赖于javax.Persistence,而不必担心执行持久化对象工作的特定供应商。这只是API,而不是实现。Hibernate现在成为实现JPA2.0规范的众多供应商之一。您可以为JPA编写代码,并选择符合您需要的任何兼容ORM供应商。

在有些情况下,Hibernate可能会为您提供未在JPA中编码的特性。在这种情况下,您可以选择直接在类中插入Hibernate特定的注释,因为JPA没有提供接口来完成这一任务。

资料来源:http:/www.redid.com/r/java/Comments/16 ovek/谅解_When_to_use_jpa_vs_Hibernate/


查看完整回答
反对 回复 2019-07-17
?
慕粉4167745

JPA是接口,Hibernate是实现。

传统上有多种Java ORM解决方案:

每个实现定义自己的映射定义或客户端API。JPA专家组收集了所有这些工具中的最好的,因此他们创建了JavaPersistenceAPI标准。

从客户端的角度来看,标准持久性api非常方便,这使得相对很容易将一个实现与另一个实现切换(尽管在实践中并不那么简单,因为在大型项目中,无论如何您都必须使用特定的非标准特性)。

标准的JPA将JavaORM竞争推向了一个新的水平,这只能带来更好的实现。

如在我的书,高性能Java持久性Hibernate提供了JPA尚未支持的特性。:

这些额外的特性使Hibernate能够满足大型企业应用程序所要求的许多持久性需求。




查看完整回答
反对 回复 2019-07-17

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信