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