Java 配置Hibernate以从连接池获取新连接

Java 配置Hibernate以从连接池获取新连接,java,hibernate,orm,jdbc,websphere,Java,Hibernate,Orm,Jdbc,Websphere,如何配置Hibernate,以便每次调用sessionFactory.openSession()时,它都与连接池中的新连接连接?连接池由WebSphereApplicationServer管理,是一个JDBC数据源 谢谢 如何配置Hibernate,以便每次调用sessionFactory.openSession()时,它都与连接池中的新连接连接 这是默认行为,每个会话将从连接池获得一个专用连接 现在,两个会话似乎使用相同的连接,因为当第一个会话关闭时(有时手动调用session.close()

如何配置Hibernate,以便每次调用sessionFactory.openSession()时,它都与连接池中的新连接连接?连接池由WebSphereApplicationServer管理,是一个JDBC数据源

谢谢

如何配置Hibernate,以便每次调用sessionFactory.openSession()时,它都与连接池中的新连接连接

这是默认行为,每个会话将从连接池获得一个专用连接

现在,两个会话似乎使用相同的连接,因为当第一个会话关闭时(有时手动调用session.close()),另一个会话在尝试对其运行更多查询时会抛出“session closed”异常

不,他们不是。但第二个连接可能在为请求启动的事务结束时被释放。查看一下
hibernate.connection.release\u模式
,您可能希望在关闭时使用
。但是如果没有更多关于交易策略的细节,就不可能说什么

第二个会话由子线程打开,这意味着即使在(HTTP)请求完成后,子线程也可以保持活动状态


恕我直言,您不应该繁殖,我不知道应用程序服务器将如何运行。我以正确的方式解释。

这一要求的原因是什么?为了避免池中陈旧的连接,我需要在web应用程序中的一个请求中打开两个会话。现在,两个会话似乎使用相同的连接,因为当第一个会话关闭时(有时手动调用session.close()),另一个会话在尝试对其运行更多查询时会抛出“session closed”异常。第二个会话是由子线程打开的,这意味着即使在(HTTP)请求完成后,子线程仍可以继续运行。您能给出一个问题仍然存在的简化代码吗?我认为会话是1:不是线程安全的,您不应该将会话对象传递给另一个线程。2:线程绑定(取决于您使用的tx mgnt堆栈)。您是否在同一线程中打开这两个会话?如果是,请尝试在不同的线程中打开每个会话。我在两个不同的线程中打开两个会话。