JPA vs ORM vs Hibernate?
Posted
技术标签:
【中文标题】JPA vs ORM vs Hibernate?【英文标题】:JPA vs ORM vs Hibernate? 【发布时间】:2015-02-12 06:12:31 【问题描述】:我已通过各种资源了解它们。重要的是:-
-
关于他们每个人的***文章
What's the difference between JPA and Hibernate?
这是我对它们的区别的理解。我不确定我对 JPA 与 ORM 的看法是否正确
ORM: 对象关系映射是将数据从面向对象语言转换为关系数据库的概念/过程,反之亦然 例如在 java 中,它是在反射和 jdbc 的帮助下完成的。
Hibernate:它是上述概念的实现。
JPA:它比 ORM 高出一步。它的高级 API 和规范,以便不同的 ORM 工具可以实现,因此它提供 开发人员可以灵活地将实现从一个 ORM 更改为另一个(例如,如果应用程序使用 JPA api 和 implementationaion 处于休眠状态。如果需要,将来它可以切换到 IBatis。但另一方面,如果应用程序直接锁定实现 没有 JPA 平台的休眠,切换将是一项艰巨的任务)
可以有或没有 JPA 规范的 ORM 实现。例如,根据这个 link 仅在休眠部分下 Hibernate 3.2 及更高版本提供了 Java Persistence API 的实现
【问题讨论】:
你是绝对正确的。 ORM 只是概念或映射 OO -> RMDBS 的名称。 JPA 是 Java Persistence API,被指定为 JavaEE 规范的一部分。 Hibernate 是实现或 API 之一。 JPA 有很多版本,不同版本的 Hibernate 实现了不同版本的 JPA API。 我不知道为什么它在发布的 5 秒内也收到了反对票。如果downvoter可以给我反馈,以便我下次可以改进,将不胜感激 @BoristheSpider 感谢。我对 JPA 的看法也正确吗? 大部分都在那里。 JPA 不是“高级”API,它只是 ORM 框架的规范。它与 Java Servlet API 或 Java Transaction API 等非常相似——都是 JavaEE 的一部分。 iBATIS 不是 JPA 实现。 “我不确定我对 JPA 与 ORM 的看法是否正确”暗示 我对 JPA 与 ORM 的看法是否正确? 所以我认为有一个问题,有些人喜欢我认为要投反对票。 【参考方案1】:ORM 是获取面向对象数据并映射到关系数据存储(例如 RDBMS 中的表)的方法
JPA 是 Java EE 中 ORM 的 Java EE 标准规范。
JPA 的参考实现是 EclipseLink。如果您没有显式配置提供程序,则在幕后使用 EclipseLink。
Hibernate 是 JPA 规范的另一种实现,因为您可以使用标准 JPA API 并将您的应用程序配置为使用 Hibernate 作为规范的提供者。
Hibernate 还提供了超出 JPA 规范中指定的 ORM 功能的超集。这意味着,虽然它提供了 JPA API 的实现,但它还提供了超出 JPA 指定的更多功能。
【讨论】:
@HalfBloodPrince,正如上面凯文所说,ORM 是将对象映射到关系数据库表的方法。任何提供对象-数据库表映射机制的框架都称为 ORM 框架。在 JPA 规范出现之前,Hibernate 是市场上已经存在的 ORM 框架。早些时候有他们自己的 Hibernate 实现(一个 ORM 框架),然后 Hibernate 创建了 JPA 的实现。今天,Hibernate 有两种风格 1. 自己实现 2. JPA 实现 @RakeshBhalani 我认为更清楚地说,Hibernate 的一部分特性提供了 JPA 规范的实现,此外,Hibernate 提供了超出 JPA 规范所需特性的附加特性。换句话说,Hibernate 的 JPA 部分是 Hibernate 提供的完整功能集的子集【参考方案2】:你似乎在理解上犯的唯一错误是
它是ORM之上的一步
一个快速说明,以 javax.persistence 开头的库与 JPA 相关联。只要可能,您应该更喜欢这些而不是 Hibernate 库。因为这些是便携式的。但是,您会在 Hibernate 中获得一些额外的功能,在这些特定情况下,请随意使用 Hibernate。
【讨论】:
以上是关于JPA vs ORM vs Hibernate?的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate SessionFactory vs EntityManagerFactory [重复]
Spring Data JPA Vs Hibernate JPA Vs JPA
hibernate vs ebean 作为可扩展的高性能 ORM
Spring Boot spring.datasource.schema VS spring.jpa.properties.hibernate.default_schema