首页 / 软件开发 / JAVA / 将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)
将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)2011-09-18Donald Vines简介:通过使用 EJB 2.1 以及 OpenJPA 和 EJB 3.0 中的等效功能比较 Hibernate 应用程序中的特 性和功能,学习如何将 Hibernate 应用程序源代码、对象关系映射和配置参数迁移到 OpenJPA。引言Hibernate 是开放源代码持久性和查询框架,提供传统 Java™ 对象 (POJO) 到关 系数据库表的与对象相关的映射,以及数据查询和检索功能。Apache OpenJPA 项目将按照 EJB 3.0 Java Persistence API 规范的定义为 POJO 实体提供类似的开放源代码持久性和查询框架。本文介绍 Enterprise JavaBeans™ (EJB) 2.1 中的通用 Hibernate 场景,并将它们与 OpenJPA 和 EJB 3.0 中实现的等效场景进行比较。具体来说,您可以并排查看 Hibernate 应用程序源代码、对象关系映射和 配置参数,并将它们与等效的 OpenJPA 源代码、映射和配置进行比较。这里显示的比较不仅使您能够了 解如何进行这些更改,而且说明了将使用这些通用场景的遗留 Hibernate 应用程序迁移到 OpenJPA 相当 简单。尽管本文重点介绍将遗留 Hibernate 应用程序迁移到 OpenJPA,但是如果您熟悉 Hibernate,还会发现其中的价值,并希望尽快使用新的 JPA 规范以及使用 OpenJPA 持久性提供程序进 行新的应用程序开发。本文假设您熟悉 Hibernate 的基本概念,并将专门介绍 Hibernate 3.0 实现。本文中的所有示例均在 EJB 2.1 中的 Hibernate 3 中运行过,并在使用 IBM® WebSphere® Application Server V6.1 Feature Pack for EJB 3.0 的 OpenJPA 0.9.7 中运行过。将遗留 Hibernate 应用程序迁移到 OpenJPA 的原因是多方面的。例如,Hibernate 是一个非标 准的、对象关系映射和持久性管理解决方案。Hibernate 3 需要 JDK 1.3.1 或更高版本。通过对比, OpenJPA 可实现 JPA 规范,该规范是 Java 5 规范的核心部分,并且 WebSphere Application Server V6.1 Feature Pack for EJB 3.0 的实现基于该规范。有关这些产品的详细信息,请参见参考资料。考虑到本文的目的,JPA 表示该规范,并且 OpenJPA 表示 JPA 规范的实现。本文没有介 绍 Hibernate 的所有特性和功能,但介绍了该领域中经常使用的最佳实践。迁移 Hibernate 应 用程序源代码Java Persistence API (JPA) 是作为 EJB 3.0 规范 (JSR220) 的一部分引入的, 目的是让整个 Java 社区支持标准、单一的持久 API。JPA 将采用 Hibernate、TopLink、Java Data Objects 和 Container Managed Persistence (EJB-CMP) 2.1 规范的最佳理念。JPA 适用于 Java Platform Standard Edition (Java SE) 和 Enterprise Edition (Java EE) 环境,因为它将实体 表示为 JPA 持久性提供程序(如 OpenJPA)可以管理的 POJO。关于实体的对象关系映射的元数据是使用 Java 5 注释或在 XML 描述符中指定的。实体用于将 Java 对象持久保存到数据库。有许多 JPA 持久性提供程序。IBM 的 JPA 规范实现基于 Apache OpenJPA 项目。随着这些 JPA 持久性提供程序的发 布,客户现在可以对标准 API 进行编码,不必在不兼容的非标准持久性提供程序之间进行决策。为帮助您将遗留 Hibernate 应用程序迁移到 OpenJPA,本部分将通常使用的 Hibernate 非标准 API 与 等效的 OpenJPA 标准 API 进行了比较。本部分先比较所使用的类和接口,然后通过常规用法场景比较 API。以下各部分提供了详细信息:类和接口运行时配置会话管理事务管理实体管理分离的实体