Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关闭打开的休眠会话(如果存在)_Java_Hibernate_Swing - Fatal编程技术网

Java 关闭打开的休眠会话(如果存在)

Java 关闭打开的休眠会话(如果存在),java,hibernate,swing,Java,Hibernate,Swing,当Hibernate会话打开时(sessionFactory.openSession()),它可能会关闭。没关系。如果错过关闭用于检索应用程序中任何位置的数据(而不是保存、更新或删除)的已打开会话,如何关闭已打开的会话(如果存在) (比方说,当一个JFrame关闭时,如果有可用的打开会话,则必须关闭它们。关闭会话可以通过逐个检查代码来完成,但我的意思是,在这里,不检查代码,是否有任何方法可以关闭丢失的会话以使用某段代码关闭).数据库操作完成后,为什么不关闭会话? 我的意思是,在DAO类中,您可以

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


(比方说,当一个
JFrame
关闭时,如果有可用的打开会话,则必须关闭它们。关闭会话可以通过逐个检查代码来完成,但我的意思是,在这里,不检查代码,是否有任何方法可以关闭丢失的会话以使用某段代码关闭).

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

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

您可以使用以下命令获取当前会话:

Session sess = sessionFactory.getCurrentSession();
并在JFrame的关闭事件上关闭会话

我收到了以下几行来自

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


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

非常感谢您的回答。我的意思是,如果关闭会话被误认为是一个错误而忘记了,那么当应用程序运行时,就会存在更多打开的会话,并且可能会发生内存浪费。在这种情况下,如何关闭或查看是否有任何会话被打开?您能否给出这种场景的示例(我无法可视化)?
sessions=sessionFactory.openSession();List List=s.createCritaria。list()如果忘记关闭此会话。(没有代码:s.close();)比方说,此获取列表被执行更多次,然后打开一个新会话。然后每次执行上述代码时,一个新会话开始,但没有关闭。然后可能会存在越来越多的打开会话。最后可能会导致jvm内存过载。不是吗?我想关闭已打开的sesseions(如果存在)。谢谢你的关注。哦,我已经相应地编辑了上面的答案。由于应用程序只有一个Sessionfactory,所以我们将拥有与应用程序关联的所有会话,并且可以关闭它们。我不确定,但我阅读并得出结论。谢谢。我试图关闭会话,该会话取自
sessionFactory.getCurrentSession()。然后出现异常,表示没有打开任何会话。但是已经打开了一个未关闭的会话。我想我们最好检查两次代码,检查打开的会话。