hibernate sessionfactory如何管理会话?

时间:2013-03-25 11:15:05

标签: hibernate session connection sessionfactory

我刚刚获得了Hibernate Session和Connection之间的关系。 但现在,我得到另一个问题:hibernate sessionfactory如何管理会话? 在以下代码段中:DAO类的save()方法:

Session session = sessionFactory.openSession();
   Transaction tx=null;
   tx=session.beginTransaction(); 
   session.save(transientInstance);
   session.flush();
   tx.commit();

当我们调用sessionFactory.openSession()时,它将创建一个附加到当前线程的新会话(通过ThreadLocal),此会话也附加到JDBC连接, 但是,正如您所看到的,我们不需要关闭会话(session.close()),也不需要关闭连接。 那么,Hibernate会话的生命周期是什么,在什么情况下会被关闭?自动?

1 个答案:

答案 0 :(得分:9)

我推荐使用getCurrentSession方法,因为只有这种方法才能确保会话将从休眠状态关闭

Configuration J2EE Current Session.

如果您使用openSession方法,则必须自行关闭会话。 在我开始使用hibernate后,我认为无论我使用哪种方法都没关系,因为所有会话都将自动关闭...我错了。 我从hibernate发现了SessionStatistics SessionStatistics 公开会议已经开放,从未结束。

我将所有来电更改为getCurrentSessionimpl后。每个请求会话模式打开的会话将在下班后关闭。

Transactions Basics