使用连接池,例如c3p0或dbcp。您可以将此类池配置为监视池中的连接- 在将连接传递给Hibernate之前,将其返回或定期接收之后。如果连接断开,则透明地将其关闭,丢弃并打开一个新的池-无需注意。
数据库连接池更适合于同时打开多个连接的多用户,数据库繁重的应用程序,但是我认为这并不过分。绑定到最大1个连接的池应该可以正常工作。
更新:每次尝试访问数据库时,Hibernate都会询问DataSource
(连接池)。如果没有活动的连接可用(例如,由于数据库关闭),这将引发异常。如果您想提前知道数据库何时不可用(即使用户什么都不做),那么不幸的是,您需要偶尔执行一次后台线程检查数据库。
但是,在某些配置中,仅打开会话可能还不够。您最好运行一些虚拟的廉价查询,例如SELECT 1
(在原始JDBC中)。