Mar*_*ark 4 java hibernate transactions
我已经读过某个地方,当刷新会话或提交事务时,会话本身由Hibernate关闭.那么,我如何在之前关闭的同一个线程中重用Hibernate Session?
谢谢
Pas*_*ent 12
我已经读过某个地方,当刷新会话或提交事务时,会话本身由Hibernate关闭.
一个flush不不关闭会话.但是,从Hibernate 3.1开始,如果您配置为" "或" ",或者如果您使用(强制JTA),commit则会关闭会话.current_session_context_classthreadjtaTransactionManagerLookupgetCurrentSession()
以下代码说明了这一点(current_session_context_class设置为thead此处):
Session session = factory.getCurrentSession();
Transaction tx = session.beginTransaction();
Product p = new Product();
session.persist(p);
session.flush();
System.out.println(session.isOpen()); // prints true
p.setName("foo");
session.merge(p);
tx.commit();
System.out.println(session.isOpen()); // prints false
Run Code Online (Sandbox Code Playgroud)
那么,我如何在之前关闭的同一个线程中重用Hibernate Session?
使用内置的" managed"策略(将current_session_context_class属性设置为managed)或使用自定义CurrentSessionContext 派生ThreadLocalSessionContext和覆盖ThreadLocalSessionContet.isAutoCloseEnabled().
再次,请参阅上面的链接以及长对话的扩展会话模式怎么样?
| 归档时间: |
|
| 查看次数: |
4876 次 |
| 最近记录: |