如果存在,则关闭打开的hibernate会话
当打开Hibernate会话( sessionFactory.openSession()
)时,它可能会被关闭。 没关系。 如果错过关闭用于检索数据(不保存或更新或删除)的打开会话,应用程序中的任何位置,如果存在,如何关闭打开的会话?
(假设当JFrame
关闭时,如果有可用的打开会话,则必须关闭它们。关闭会话可以通过逐个查看代码来完成,但我的意思是这里,没有检查代码,有没有办法关闭错过了一些代码的会话)。
为什么在数据库操作完成后不关闭会话? 我的意思是,在DAO类中,您可以打开会话执行数据库操作。 在最后一个块中,关闭你的会话。 您可以关闭会话,如:
finally { if(session!=null){ session.close(); } }
要么
您可以使用获取当前会话
Session sess = sessionFactory.getCurrentSession();
关闭JFrame关闭事件的会话。
我从这个链接得到以下几行
这里的主要合同是创建Session实例。 通常,应用程序具有单个SessionFactory实例,并且服务客户端请求的线程从此工厂获取Session实例。 SessionFactory的内部状态是不可变的。 创建后,将设置此内部状态。 此内部状态包括有关对象/关系映射的所有元数据。 实现者必须是线程安全的。
完成操作或交易时,我们有责任关闭会话。 当我们关闭sessionfactory时,所有资源(连接池等)都被正确释放。