JPA vs ORM vs Hibernate?

2022-08-31 14:50:17

我通过各种资源阅读了有关它们的信息。重要的有:-

  1. 关于他们每个人的维基百科文章
  2. JPA和Hibernate有什么区别?

以下是我对它们之间差异的理解。我不确定我对JPA与ORM的看法是否正确

  1. ORM:对象关系映射是将数据从面向对象的语言转换为关系数据库的概念/过程,反之亦然 例如,在java中,它是在反射和jdbc的帮助下完成的。

  2. 冬眠:它是上述概念的实现。

  3. JPA:它比ORM高出一步。它的高级API和规范,以便不同的ORM工具可以实现,以便为开发人员提供将实现从一个ORM更改为另一个ORM的灵活性(例如,如果应用程序使用JPA api并且实现处于休眠状态)。将来,如果需要,它可以切换到IBatis。但另一方面,如果应用程序直接使用Hibernate锁定没有JPA平台的实现,那么switing将是艰巨的任务)

可以使用/不使用 JPA 规范的 ORM 实现。例如,根据休眠部分下的此链接,只有休眠版本3.2及更高版本提供了Java持久性API的实现


答案 1
  1. ORM是获取面向对象的数据并映射到关系数据存储(例如RDBMS中的表)的方法

  2. JPA 是 Java EE 中 ORM 的 Java EE 标准规范。

  3. JPA的参考实现是EclipseLink。如果您没有明确配置提供程序,则会在幕后使用 EclipseLink。

  4. Hibernate 是 JPA 规范的另一种实现,因为您可以使用标准的 JPA API 并将应用程序配置为使用 Hibernate 作为规范的提供者。

  5. 休眠还提供了超出 JPA 规范中指定的 ORM 功能的超集。这意味着,虽然它提供了JPA API的实现,但它也提供了超出JPA指定范围的更多功能。


答案 2

你似乎在你的理解中犯的唯一错误是

它比ORM高出一步

一个快速说明,以javax.persistence开头的库与JPA相关联。您应该尽可能选择这些而不是休眠库。因为这些是便携式的。但是,您将在Hibernate中获得一些额外的功能,在这些精确的情况下,请随时使用Hibernate。


推荐