在启动时使用Hibernate验证数据库连接

时间:2011-01-01 22:41:08

标签: java hibernate

我有一个桌面应用程序,我想测试应用程序和数据库之间连接的有效性。在我的应用程序启动时测试这个的最佳方法是什么?目前尝试启动事务并捕获异常似乎可以完成这项工作。还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

我认为这不应该是Hibernate或您的代码的工作。它应该内置到您正在使用的连接池中。

如果您部署在Java EE应用服务器上,那么这将是JNDI连接池配置的一部分。您可以要求它在检查连接之前检查连接(例如,对于Oracle,“SELECT 1 FROM DUAL”)。

我建议您在应用之外进行此操作。让连接池管理连接。

答案 1 :(得分:0)

可以使用Hibernate配置高级连接池,称为c3p0。只需在persistence.xml中提供配置参数:

<property name="hibernate.c3p0.testConnectionOnCheckout" value="true"/>
然后,

Hibernate将尝试访问必要的类。使用Maven配置:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>4.1.8.Final</version>
</dependency>

注意:我不会忽略有人说在使用之前测试连接是昂贵的。我认为应用程序的一致性具有优势。执行真正的SQL语句时,昂贵是相对的,即使在简单的情况下也不到10%。