监视数据库连接的最佳/最佳/最佳方式是什么。 我在写秋千申请。我想要它做的是每个时间段检查与数据库的连接。我尝试过这样的事情。
org.hibernate.Session session = null;
try {
System.out.println("Check seesion!");
session = HibernateUtil.getSessionFactory().openSession();
} catch (HibernateException ex) {
} finally {
session.close();
}
但那个dosn不起作用。 我想到的第二个问题是这个会话结束将如何影响其他查询。
答案 0 :(得分:3)
使用c3p0或dbcp等连接池。您可以配置此类池以监视池中的连接 - 在将连接传递回Hibernate之后,在接收或定期接收之后。如果连接中断,则池会透明地关闭它,丢弃并打开一个新的 - 没有你注意到。
数据库连接池更适合多用户,数据库繁重的应用程序,同时打开多个连接,但我不认为这是一种过度杀伤力。池应该可以很好地绑定到最多1个连接。
更新:每次尝试访问数据库时,Hibernate都会询问DataSource
(连接池)。如果没有可用的活动连接(例如,因为数据库已关闭),这将引发异常。如果您想提前知道数据库何时不可用(即使用户没有做任何事情),遗憾的是您需要一个后台线程,偶尔检查数据库。
然而,在某些配置中,几乎没有打开会话可能是不够的。你最好运行一些虚拟,廉价的查询,如SELECT 1
(在原始JDBC中)。