Hibernate 和 JPA 的区别


Red Hat 开发了 Hibernate 框架,也称为 Hibernate 对象关系映射器 (ORM)。这个用于 Java 编程语言的对象关系映射工具的第一个版本于 2007 年 5 月 23 日发布。Hibernate 支持跨多个平台工作的 Java 虚拟机 (JVM),并且是用 Java 编写的。

“JPA”代表 Java 持久性 API。它是一个用于管理关系数据的工具。在最基本的形式中,JPA 是一个规范。它处理对象元数据或关系元数据。Java 持久性查询语言 (JPQL) 是 JPA 使用的语言。

什么是 JPA?

在处理大量数据时,几乎每个应用程序都需要执行数据库操作,例如存储和检索数据库中的信息。完成此繁琐的任务通常需要大量时间。

Java 持久性 API (JPA) 对于 Java 开发人员来说是一个极好的选择,因为它有助于减轻使用数据库的工作负担。JPA 是一个 Java 规范,它为用 Java 编写的应用程序提供了将对象映射到关系数据库的功能。它提供了一种持久性管理机制以及一个对象关系映射系统。JPA 负责在内部定义这些映射,而不是依赖于针对各个供应商定制的实现。它依赖于 Object Relational Mapping (ORM) 工具(如 TopLink 和 Hibernate 等)来执行操作,而不是自行执行这些任务。

JPA 表示如何定义一个普通 Java 对象 (也称为 POJO) 作为实体,并通过使用各种元设置来管理它与关系。系统中使用注释或 XML 文件来定义它们。JPA 可以在 Java EE(企业版)容器内部和外部都兼容运行;它用于测试 Java SE 版本的应用程序功能。

以下是用于简化持久性管理的 JPA 的组件:

  • 持久化单元
  • 实体
  • 管理器工厂
  • 持久化上下文
  • 实体管理器
  • 实体对象

什么是 Hibernate?

任何 Java 程序都可以利用 Hibernate 提供的对象关系持久性和查询服务,Hibernate 是一种开源且轻量级的解决方案。它被广泛认为是 Java 持久性 API 最好的实现之一。

Hibernate 有助于将 Java 对象映射到数据库,并减少与持久性相关的频繁编程活动。XML 文件使快速完成此操作成为可能,并且您无需编写任何代码即可执行此操作。如果数据库或任何其表发生修改,则只需要更新 XML 文件的属性。

SQL 的面向对象对应物称为 HQL,它代表 Hibernate 查询语言。它生成单独的数据库查询。因此,无需编写特定于数据库的查询。在实现 Hibernate 之前,每当用于项目的数据库以任何方式修改时,我们都需要修改 SQL 查询。这导致了维护问题。

由于 Hibernate 使您能够自动为数据库构建表,因此不再需要手动创建表。此外,使用此框架,您可以轻松地同时从多个表中检索数据。

以下是 Hibernate 兼容的数据库列表:

  • Oracle
  • Microsoft SQL Server 数据库
  • HSQL 数据库引擎
  • DB2/NT
  • FrontBase
  • Sybase SQL Server
  • PostgreSQL
  • MySQL
  • Informix 动态服务器

JPA 和 Hibernate 的区别

下表重点介绍了 JPA 和 Hibernate 的主要区别:

比较依据JPAHibernate
定义在 Java 应用程序中,关系数据库的管理属于 JPA 的范围。Hibernate 是一种对象关系映射 (ORM) 工具,用于将 Java 对象的状态保存在数据库中。
可以在 javax.persistence 包中找到其定义。可以在 org.hibernate 包中找到其定义。
实现JPA 是一个规范,而不是一个实现。Hibernate 是 Java 持久性 API (JPA) 的一个实现,并且符合 API 的通用标准。
功能它是标准的应用程序编程接口,使开发人员可以轻松地执行数据库操作。其主要目的是促进将 Java 数据类型映射到数据库表和 SQL 数据类型。
接口为了与负责持久性单元的实体管理器工厂进行通信,它使用了 **EntityManagerFactory** 接口。为了生成 Session 实例,它使用了 **SessionFactory** 接口。
组件它使用 **EntityManager** 接口来执行创建、读取和删除映射实体类的实例等操作。可以使用此接口与持久化上下文进行交互。为了执行创建、读取和删除映射实体类的实例等操作,它使用了一个名为 Session 的接口。在应用程序运行时,它充当 Java 应用程序和 Hibernate 之间的接口。
数据库操作为了执行数据库操作,它使用了一种称为 Java 持久性查询语言 (JPQL) 的面向对象查询语言。为了执行数据库操作,它使用了一种称为 Hibernate 查询语言 (HQL) 的面向对象查询语言。

结论

在本文中,我们介绍了 Java 中两个最受欢迎的主题,JPA 和 Hibernate。JPA 是一个规范,而 Hibernate 是一个实现。

JPA 和 Hibernate 都可以减少 Java 开发人员的工作量。在开发任何 Java 程序时,您可以根据您的预期目的使用其中任何一个。

JPA 和 Hibernate 成功地缩小了以前存在于 Java 对象和关系数据库之间的差距。

更新于:2022 年 7 月 25 日

6K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告