一尘不染

休眠会话工厂如何管理会话?

hibernate

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

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

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


阅读 202

收藏
2020-06-20

共1个答案

一尘不染

我建议使用此getCurrentSession方法,因为只有使用此方法,您才能确保会话将从hibernate中关闭

配置J2EE当前会话。

如果使用该openSession方法,则必须自己关闭会话。在我开始使用hibernate模式后,我认为使用哪种方法都没有关系,因为所有会话都将自动关闭…我错了。我从hibernate
SessionStatistics的SessionStatistics中
发现,打开的会话已经打开并且从未关闭过。

在我将所有呼叫更改为getCurrentSession和之后impl。每个会话的会话模式打开的会话将在工作后关闭。

交易基础

2020-06-20