Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 打开hibernate会话而不关闭会话的影响_Java_Mysql_Database_Hibernate_Session - Fatal编程技术网

Java 打开hibernate会话而不关闭会话的影响

Java 打开hibernate会话而不关闭会话的影响,java,mysql,database,hibernate,session,Java,Mysql,Database,Hibernate,Session,我最近在代码中发现了一个问题,我打开了一个hibernate会话,但忘记关闭它。虽然我修复了它,但我似乎无法理解我犯的这个错误的影响 这段代码在HTTP服务中,我需要两种情况的答案: 当请求到来时,容器生成一个新线程 它从线程池中获取 我在其他帖子中读到会话绑定到线程,所以我从中推断出,如果在每个请求中生成了一个新线程,并且我在其中一个请求中保留了一个打开的会话。当请求完成时,它将被销毁。我不知道我是否正确。这取决于您使用什么来控制会话生命周期。 例如,如果将“每个请求的会话模式”与一起使用,则

我最近在代码中发现了一个问题,我打开了一个hibernate会话,但忘记关闭它。虽然我修复了它,但我似乎无法理解我犯的这个错误的影响

这段代码在HTTP服务中,我需要两种情况的答案:

  • 当请求到来时,容器生成一个新线程
  • 它从线程池中获取

  • 我在其他帖子中读到会话绑定到线程,所以我从中推断出,如果在每个请求中生成了一个新线程,并且我在其中一个请求中保留了一个打开的会话。当请求完成时,它将被销毁。我不知道我是否正确。

    这取决于您使用什么来控制会话生命周期。 例如,如果将“每个请求的会话模式”与一起使用,则会话将被筛选器关闭。您也可以使用自己的筛选器来控制会话

    如果你不使用过滤器或类似的东西,你应该关闭一个会话。 处理请求的线程对Hibernate会话一无所知

    SessionFactory.openSession()
    始终打开新会话


    SessionFactory.getCurrentSession()
    检查当前会话是否存在-返回它,如果当前会话不存在-创建一个新会话。“当前会话”的含义取决于会话工厂参数。在经典情况下,会话绑定到线程(如您所描述的),但它可以绑定到事务,例如

    这取决于您使用什么来控制会话生命周期。 例如,如果将“每个请求的会话模式”与一起使用,则会话将被筛选器关闭。您也可以使用自己的筛选器来控制会话

    如果你不使用过滤器或类似的东西,你应该关闭一个会话。 处理请求的线程对Hibernate会话一无所知

    SessionFactory.openSession()
    始终打开新会话

    SessionFactory.getCurrentSession()
    检查当前会话是否存在-返回它,如果当前会话不存在-创建一个新会话。“当前会话”的含义取决于会话工厂参数。在经典情况下,会话绑定到线程(如您所描述的),但它可以绑定到事务,例如