Java 中的 ORM 工具

2025年3月17日 | 阅读 3 分钟

ORM 代表 对象关系映射。 它是一种介于 Web 应用程序和数据库之间的中间件应用程序或工具。它在一个 API 中封装了存储驱动程序的特定实现细节。

什么是 ORM?

ORM 是一种在 Java 对象和关系数据库(表)之间转换数据的技术。简而言之,我们可以说 ORM 实现了将对象映射到关系模型及其反向映射的责任。ORM 工具以模型类成为数据库中的表,每个实例成为表中的一行的方式进行映射。

ORM Tools in Java

ORM 工具的优点

  • 节省时间和精力。
  • 加快开发进程。
  • 降低开发成本。
  • 提供数据库连接。
  • 使开发更面向对象。
  • 易于事务管理。
  • 无需手动实现数据库。
  • 修改任何模型(对象或关系模型)都不会相互影响。

ORM 工具

有许多 ORM 工具可用,但以下 ORM 工具是最常用的。

  • Hibernate
  • TopLink
  • EclipseLink
  • OpenJPA
  • MyBatis (前身为 iBatis)
ORM Tools in Java

Hibernate

Hibernate 是一个 Java 持久化框架,它简化了 Java 应用程序与数据库交互的开发。它是一个开源、广泛使用、轻量级的 ORM 工具。Hibernate 实现 JPA (Java Persistence API) 的规范以实现数据持久化。

Hibernate 的优点

  • 它是一个开源、轻量级、灵活且强大的 ORM 工具。
  • 它支持数据库无关的查询(HQL)。
  • 其性能很快,因为内部使用了缓存。
  • 它简化了复杂的连接。
  • 如果表或数据库有任何修改,只需更改 XML 文件属性。

TopLink

TopLink 是 Oracle 开发的一款 ORM 工具,专为 Java 开发人员设计。它是一个持久化框架,是 Oracle 的 OracleAS、WebLogic、OC4J 服务器的一部分。它提供了开发工具和运行时功能,从而简化了开发过程并增加了功能。持久化对象数据存储在关系数据库中,有助于构建高性能应用程序。通过将对象数据转换为持久化对象数据,可以将其存储在 XML (可扩展标记语言) 或关系数据库中。

TopLink 的优点

  • 提供用于定义映射的 GUI 界面。
  • 更灵活的映射类型。
  • 对象模型和 SQL 模式之间的独立性。
  • 它提供了开发灵活性,例如将业务逻辑编码到模型中,开发人员可以处理现有模型。
  • 它提供了更灵活的映射类型。

OpenJPA

Apache OpenJPA 是 Apache 软件基金会 的一项 Java 持久化项目,可用作独立的 POJO 持久化层,或 集成 到任何符合 Java EE 标准的容器以及许多其他轻量级框架(如 Tomcat 和 Spring)中。

OpenJPA 的优点

  • 声明式映射。
  • 可用作独立的 POJO 持久化层。
  • 易于集成到任何 EJB 兼容容器中。

MyBatis

MyBatis 以前称为 iBatis。它也是一个开源持久化框架,可简化数据库的实现。它基本上执行以下四项操作:

  • 它安全地执行 SQL,并抽象出 JDBC 的所有复杂性。
  • 它将参数对象映射到 JDBC 预编译语句参数。
  • 它将 JDBC 结果集中的行映射到对象。

它与其他 ORM 工具不同。MyBatis 与其他 ORM 工具的主要区别在于,MyBatis 强调使用 SQL,而其他 ORM 工具则使用自定义查询语言 (HQL)。

MyBatis 的优点

  • 它提供标签而不是使用逻辑代码。
  • 它非常灵活,并且接近 JDBC。
  • SQL 语句与代码分离。
  • 它支持内联 SQL。
  • 易于维护,因为它以存储过程的形式封装了 SQL。
  • 它还支持动态 SQL。

EclipseLink

EclipseLink 是由 Eclipse Foundation 推出的开源 Eclipse Persistence Services 工具。它是一个可扩展的框架,允许 Java 开发人员与各种数据服务进行交互,例如数据库、Web 服务、对象 XML 映射和企业信息系统。它支持以下四种持久化标准:

  1. JPA (Jakarta Persistence)
  2. JAXB (Jakarta XML Bindings)
  3. JCA (Jakarta Connectors)
  4. SDO (Service Data Object)

EclipseLink 的优点

  • 它基于 TopLink,所以如果有人熟悉 TopLink,那么使用它会很容易。
  • EclipseLink 完全支持在 OSGi 环境中使用。