我有一个使用Hibernate / JPA连接到数据库的JSP / Spring应用程序。我有一个外部程序,检查Web服务器是否每5分钟启动一次。
程序调用特定的URL来检查Web服务器是否仍在运行。服务器返回“SUCCESS”。显然,如果服务器现在,则不返回任何内容。请求超时并发出警报以通知系统管理员有问题......
我想在此过程中添加另一层:如果数据库服务器关闭,我希望服务器返回“ERROR”。有没有办法使用Hibernate检查数据库服务器是否还活着?
我应该做的是拿一个物体并试图保存它。这可行,但我认为这可能对我想要的东西太多了。我也可以从数据库中读取(加载)一个对象。但是,由于我们对所有对象都使用二级缓存,因此对象将从缓存中加载,而不是数据库。
我正在寻找的是:
HibernateUtils.checkDatabase()
Hibernate中是否存在这样的函数?
答案 0 :(得分:0)
您可以使用本机查询,例如
Query query = sess.createNativeQuery("select count(*) from mytable").setCacheable(false);
BigDecimal val = (BigDecimal) query.getSingleResult();
这应该强制hibernate使用池中的连接。如果db已关闭,我不知道hibernate返回的错误究竟是什么,因为它无法从池中获取连接。如果db已启动,则会获得查询结果。