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

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

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

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

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

要么

您可以使用获取当前会话

 Session sess = sessionFactory.getCurrentSession(); 

关闭JFrame关闭事件的会话。

我从这个链接得到以下几行

这里的主要合同是创建Session实例。 通常,应用程序具有单个SessionFactory实例,并且服务客户端请求的线程从此工厂获取Session实例。 SessionFactory的内部状态是不可变的。 创建后,将设置此内部状态。 此内部状态包括有关对象/关系映射的所有元数据。 实现者必须是线程安全的。

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