如何配置Hibernate,以便每次调用sessionFactory.openSession()时它都会连接来自连接池的新连接?连接池由Websphere Application Server管理,是JDBC数据源。
由于
答案 0 :(得分:2)
如何配置Hibernate,以便每次调用sessionFactory.openSession()时它都会连接到连接池中的新连接?
这是默认行为,每个会话将从连接池获得专用连接。
现在看来两个会话都使用相同的连接,因为当第一个会话关闭时(手动调用session.close())有时,另一个会话在尝试运行时会抛出“会话关闭”异常对它的更多疑问。
不,他们不是。但也许第二个连接在为请求启动的事务结束时释放。查看hibernate.connection.release_mode
configuration parameter,您可能希望使用on_close
。但是如果没有关于交易策略的更多细节,就不可能说什么。
第二个会话由子线程打开,这意味着即使在(HTTP)请求完成后,子线程也可以继续生效。
带上我以前的建议,你应该不会产生unmanaged threads,我不知道应用服务器的行为方式。我在this other answer中解释了什么是正确的方法。