将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一) - 编程入门网
return (EntityManager) tls.get();
}
public static void closeSession() {
EntityManager s = (EntityManager) tls.get();
tls.set(null);
if (s != null && s.isOpen()) s.close ();
}
...
}
将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)(5)时间:2011-09-18 Donald Vines4. 事务管理 Hibernate 应用程序可以运行于使用不同事务策略的环境中。应用程序可以运行于使用本地 JDBC 或 全局 Java Transaction API (JTA) 事务的环境中。 使用本地 JDBC 事务是最常见的场景。如果具有异类数据存储(如数据库和消息队列),则 JTA 事务 非常有用;JTA 允许您将其视为单个事务。 Hibernate 应用程序通过调用事务 API 来管理自己的事务。您使用的事务策略(JDBC 或 JTA)是在 Hibernate 配置文件中设置的,所以它与应用程序无关。 Hibernate 约定 在 Hibernate 中,事务管理按照以下方式进行映射: 使用 Session#beginTransaction() 开始事务。 使用 Transaction#commit() 提交事务。 使用 Transaction#isActive 和 Transaction#rollback() 回滚事务。 清单 5. Hibernate 事务管理
将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)(6)时间:2011-09-18 Donald VinesOpenJPA 约定 在 OpenJPA 中,等效的事务管理按照以下方式进行映射: 使用 EntityManager#getTransaction() 和 EntityTransaction#begin()。 使用 EntityTransaction#commit()。 使用 EntityTransaction#isActive() 和 EntityTransaction#rollback()。 清单 6. OpenJPA 事务管理
尽管 OpenJPA 示例将事务存储在 ThreadLocal 中,但通常仅调用 getCurrentSession ().getTransaction().begin(),并在以后调用 getCurrentSession().getTransaction().commit()。因 此,使用 OpenJPA,实际上不需要将事务存储在 ThreadLocal 中。 5. 实体管理 实体管理的常见场景包括: 创建持久对象。 使用主键检索 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |