Hibernate教程-JPA vs. Hibernate
![](https://wx.javatiku.cn/j/j301-t.jpg)
什么是 JPA?
JPA(Java Persistence API)是 Java 的一种规范,用于在 Java 对象和关系数据库之间访问、管理和持久化数据。它被认为是对象关系映射的标准方法。
JPA 可以看作是面向对象的领域模型和关系数据库系统之间的桥梁。作为一种规范,JPA 本身不执行任何操作,因此需要实现。因此,像 Hibernate、TopLink 和 iBatis 这样的 ORM 工具实现了 JPA 规范以进行数据持久化。
什么是 Hibernate?
Hibernate 是一个 Java 框架,用于将 Java 对象存储在关系数据库系统中。它是一个开源的、轻量级的 ORM(对象关系映射)工具。
Hibernate 是 JPA 的实现之一,因此它遵循 JPA 提供的通用标准。
JPA 的必要性
正如我们之前所看到的,JPA 是一个规范。它为 ORM 工具提供了通用的原型和功能。通过实现相同的规范,所有的 ORM 工具(如 Hibernate、TopLink、iBatis)都遵循共同的标准。在未来,如果我们想将应用程序从一个 ORM 工具切换到另一个,我们可以轻松地做到这一点。
JPA vs. Hibernate
JPA | Hibernate |
---|---|
Java Persistence API (JPA) 定义了 Java 应用程序中关系数据的管理。 | Hibernate 是一种对象关系映射(ORM)工具,用于将 Java 对象的状态保存到数据库中。 |
它只是一个规范。各种 ORM 工具实现它以进行数据持久化。 | 它是最常用的 JPA 实现之一。 |
它定义在 javax.persistence 包中。 | 它定义在 org.hibernate 包中。 |
EntityManagerFactory 接口用于与持久化单元的实体管理器工厂交互,从而提供实体管理器。 | 它使用 SessionFactory 接口来创建 Session 实例。 |
它使用 EntityManager 接口对映射实体类的实例进行创建、读取和删除操作。该接口与持久化上下文交互。 | 它使用 Session 接口对映射实体类的实例进行创建、读取和删除操作。它作为 Java 应用程序与 Hibernate 之间的运行时接口。 |
它使用 Java Persistence Query Language (JPQL) 作为面向对象的查询语言来执行数据库操作。 | 它使用 Hibernate Query Language (HQL) 作为面向对象的查询语言来执行数据库操作。 |