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