如果存在,则关闭打开的休眠会话

时间:2011-12-15 16:27:40

标签: java hibernate swing

当打开Hibernate会话(sessionFactory.openSession())时,它可能会被关闭。没关系。如果错过关闭用于检索应用程序中任何位置的数据(不保存或更新或删除)的已打开会话,如果存在,如何关闭已打开的会话?

(假设当JFrame关闭时,如果有可用的打开会话,则必须关闭它们。关闭会话可以通过逐个查看代码完成,但我的意思是这里,没有检查代码,有什么办法可以用一些代码来关闭错过关闭的会话。)

1 个答案:

答案 0 :(得分:3)

为什么在数据库操作完成后不关闭会话? 我的意思是,在DAO类中,您可以打开会话执行数据库操作。在最后一个块中,关闭你的会话。 您可以关闭会话,如:

finally {
   if(session!=null){
      session.close();
   }
}

OR

您可以使用

获取当前会话
Session sess = sessionFactory.getCurrentSession();

关闭JFrame关闭事件的会话。

我从this link

获取以下行
  

这里的主要合同是创建Session实例。平时   应用程序具有单个SessionFactory实例和线程   服务客户端请求从此工厂获取会话实例。   SessionFactory的内部状态是不可变的。一旦它   创建此内部状态已设置。这个内部状态包括所有   关于对象/关系映射的元数据。   实现者必须是线程安全的。

完成操作或交易时,我们有责任关闭会话。当我们关闭sessionfactory时,所有资源(连接池等)都被正确释放。

相关问题