📜  Java – JPA 与 Hibernate

📅  最后修改于: 2022-05-13 01:55:34.201000             🧑  作者: Mango

Java – JPA 与 Hibernate

JPA代表Java Persistence API(应用程序编程接口)。它最初于 2006 年 5 月 11 日发布。它是一个Java规范,为 ORM 工具提供了一些功能和标准。它用于检查、控制和保留Java对象和关系数据库之间的数据。它被视为对象关系映射的标准技术。

它被认为是面向对象模型和关系数据库系统之间的链接。由于它是Java的规范,因此 JPA 本身不执行任何功能。因此,它需要实施。因此,对于数据持久性,像 Hibernate 这样的 ORM 工具实现了 JPA 规范。对于数据持久性, javax.persistence包包含 JPA 类和接口。

让我们讨论 JPA 的一些关键特性,如下所示:

  • JPA 只是一个规范,它不是一个实现。
  • 它是一组规则和指南,用于设置实现对象关系映射的接口,.
  • 它需要一些类和接口。
  • 它支持简单、清晰和同化的对象关系映射。
  • 它支持多态和继承。
  • JPA 中可以包含动态和命名查询。

现在我们需要合并一个框架来讨论。是的,你猜对了,休眠。它是一个Java框架,开源的、轻量级的、用于Java语言的 ORM(对象关系映射)工具,它简化了Java应用程序与数据库交互的构建。它用于保存关系数据库系统中的Java对象。

Hibernate的主要特性是将Java类映射到数据库表。以下是 Hibernate 的一些关键特性:

  • Hibernate 是 JPA 指南的实现。
  • 它有助于将Java数据类型映射到 SQL 数据类型。
  • 它是 JPA 的贡献者。

现在您一定想知道为什么需要 JPA,对吧。因此,让我们讨论 JPA 的必要性,然后再讨论它们之间的差异,以获得它们之间的残酷差异。如图所示,JPA 是一种规范。它为 ORM 工具提供了通用功能和原型。所有 ORM 工具(例如 Hibernate)都遵循通用标准,执行相同的规范。随后,如果我们需要将应用程序从一种 ORM 工具切换到另一种工具,那么我们可以轻松完成。

到目前为止,我们已经讨论了这些概念及其合适的需求。现在让我们跳到 JPA 和 hibernate 之间的差异并结束这篇文章。正如我们所知,JPA 只是一个规范,这意味着没有实现。我们可以使用 JPA 注释在我们想要的范围内注释类,但是,没有实现就不会发生任何事情。假设 JPA 作为应该遵循的准则,然而,Hibernate 是一个 JPA 实现代码,它统一了 JPA 规范中描述的 API 并提供了匿名功能。

以下是 JPA 和 Hibernate 之间的区别:

JPA

Hibernate

JPA is described in javax.persistence package.Hibernate is described in org.hibernate package.
It describes the handling of relational data in Java applications.                                                                        

Hibernate is an Object-Relational Mapping (ORM) tool that is used to save the Java objects in the relational database system.

It is not an implementation. It is only a Java specification.Hibernate is an implementation of JPA. Hence, the common standard which is given by JPA is followed by Hibernate.

It is a standard API that permits to perform database operations.



It is used in mapping Java data types with SQL data types and database tables.

As an object-oriented query language, it uses Java Persistence Query Language (JPQL) to execute database operations.

As an object-oriented query language, it uses Hibernate Query Language (HQL) to execute database operations.

To interconnect with the entity manager factory for the persistence unit, it uses EntityManagerFactory interface. Thus, it gives an entity manager.

To create Session instances, it uses SessionFactory interface.

To make, read, and remove actions for instances of mapped entity classes, it uses EntityManager interface. This interface interconnects with the persistence condition.

To make, read, and remove actions for instances of mapped entity classes, it uses Session interface. It acts as a runtime interface between a Java application and Hibernate.