如何在 Tomcat 6 中使用 JTA 支持进行休眠?

2022-09-02 01:01:53

他们建议在 Java EE 环境中使用 JTA 事务支持。

但是如何在Tomcat6中配置JTA以便Hibernate Session可以使用它?

从版本3.0.1开始,Hibernate添加了该方法。最初,这假设使用 JTA 事务,其中 JTA 事务定义了当前会话的范围和上下文。鉴于许多独立的 JTA TransactionManager 实现的成熟度,大多数(如果不是全部)应用程序都应该使用 JTA 事务管理,无论它们是否部署到 J2EE 容器中。基于此,您需要使用基于 JTA 的上下文会话。SessionFactory.getCurrentSession()

(休眠参考文档|建筑。上下文会话)


答案 1

如果你想在Tomcat中支持JTA,你需要使用一个独立的事务管理器,如AtomikosJOTMBitronixSimpleJTAJBossTSGeronimoTM/Jencks。但老实说,如果你不打算处理跨多个资源的事务,那么你可以没有JTA(如果你真的需要JTA,请使用一个完整的应用程序服务器)。


答案 2

如果您只想使用,只需将以下两行添加到休眠状态.cfg.xml:SessionFactory.getCurrentSession()

<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>

这将为每个线程提供唯一的会话。由于 servlet 请求始终在一个线程内处理(假设您的代码不会生成新代码),因此会话将针对整个请求生效。

不要忘记在请求后使用过滤器关闭会话!


推荐