Hibernate检查Thread中数据库的连接(每个时间段)

时间:2012-07-26 16:43:35

标签: java hibernate session connection

监视数据库连接的最佳/最佳/最佳方式是什么。 我在写秋千申请。我想要它做的是每个时间段检查与数据库的连接。我尝试过这样的事情。

org.hibernate.Session session = null;
            try {
                System.out.println("Check seesion!");
                session = HibernateUtil.getSessionFactory().openSession();

            } catch (HibernateException ex) {
            } finally {
                session.close();
            }

但那个dosn不起作用。 我想到的第二个问题是这个会话结束将如何影响其他查询。

1 个答案:

答案 0 :(得分:3)

使用等连接池。您可以配置此类池以监视池中的连接 - 在将连接传递回Hibernate之后,在接收或定期接收之后。如果连接中断,则池会透明地关闭它,丢弃并打开一个新的 - 没有你注意到。

数据库连接池更适合多用户,数据库繁重的应用程序,同时打开多个连接,但我不认为这是一种过度杀伤力。池应该可以很好地绑定到最多1个连接。

更新:每次尝试访问数据库时,Hibernate都会询问DataSource(连接池)。如果没有可用的活动连接(例如,因为数据库已关闭),这将引发异常。如果您想提前知道数据库何时不可用(即使用户没有做任何事情),遗憾的是您需要一个后台线程,偶尔检查数据库。

然而,在某些配置中,几乎没有打开会话可能是不够的。你最好运行一些虚拟,廉价的查询,如SELECT 1(在原始JDBC中)。