3

监视与数据库的连接的最佳/良好/最佳方式是什么。我正在编写摇摆应用程序。我想要它做的是在每个时间段检查与数据库的连接。我试过这样的事情。

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

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

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

4

1 回答 1

4

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

数据库连接池更适合同时打开多个连接的多用户、数据库繁重的应用程序,但我认为这并不过分。绑定到最大 1 个连接的池应该可以正常工作。

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

但是,在某些配置中,几乎不打开会话可能还不够。您最好运行一些虚拟的、廉价的查询,例如SELECT 1(在原始 JDBC 中)。

于 2012-07-26T16:50:14.197 回答