快速业务通道

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
所有的 Hibernate 类都位于 org.hibernate 包中。 所有的 JPA 接口(和 Persistence 类)都位于 javax.persistence 包中。JPA 接口的 OpenJPA 实现位 于 org.apache.openjpa.* 包中。

org.hibernate javax.persistence 说明
cfg.Configuration Persistence 配置会话工厂(在 Hibernate 中)或实体管理器工厂(在 OpenJPA 中)的引导类。通常用于为 JVM 创建单一会话(或实体管理器)工 厂。
SessionFactory EntityManagerFactory 提供 API 以打开 Hibernate 会话(或 OpenJPA 实体管理器),并处理用户请求。通常,每个处理客户机请求的线程都打 开一个会话(或实体管理器)。
Session EntityManager 提供 API 以便在数据库之间存储和加载实体。它还提供 API 以获取事务和创建查询。
Transaction EntityTransaction 提供 API 以管理事务。
Query Query 提供 API 以执行查询。

2. 运行时配置

Hibernate 约定

在 Hibernate 中,运行时配置按照以下方式进行映射:

使用静态 SessionFactory 变量。

使用 Configuration#configure() 方法。

使用 Configuration#buildSessionFactory() 方法。

清单 1. Hibernate 运行时配置

public class ORMHelper {  private static SessionFactory sf;  protected static synchronized  SessionFactory getSessionFactory(String name) {   if (sf == null) {    sf = new Configuration().configure(name).buildSessionFactory();   }   return sf;  }  ... }

使用遗留 Hibernate 应用程序时,您通常会发现一个单一的静态 SessionFactory 实例,该实例由 JVM 中处理客户机请求的所有线程共享。Hibernate 还可以创建多个 SessionFactory 实例,但是实际很 少这样做。

可以通过多种方法在 Hibernate 中配置 SessionFactory。最常见的场景是调用 configure() 方法。 如果没有向 configure() 传入名称,它将在类路径的根目录中查找 hibernate.cfg.xml。如果传入 XML 配置文件的名称,它将在类路径上查找该名称。

找到 XML 配置文件后,buildSessionFactory() 方法将使用该配置文件中的元数据创建和初始化 SessionFactory。

牢记以下事项:

有些应用程序从 JNDI 注册表查找 SessionFactory,而不使用静态变量,但是在第一次查找时,您仍 需要调用配置和 buildSessionFactory,因此几乎没有什么效果,而且静态变量是较常用的方法。

您还可以使用 Configuration#setProperties() 方法以编程方式配置 Hibernate 配置参数,而不使 用 configure() 方法从文件读取这些参数,但是,较好并且频繁使用的方法是外部化 Hibernate 属性。

OpenJPA 约定

在 OpenJPA 中,等效运行时配置按照以下方式进行映射:

使用静态 EntityManagerFactory 变量。

使用 Persistence#createEntityManagerFactory()

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)(3)

时间:2011-09-18 Donald Vines

清单 2. OpenJPA 运行时配置

public class ORMHelper {   private static EntityManagerFactory sf;   protected static synchronized   EntityManagerFactory getSessionFactory(String name) {    if (sf == null) {      sf = Persistence.createEntityManagerFactory (name);    }    return sf;   }   ... }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号