【发布时间】:2012-01-13 19:50:46
【问题描述】:
我在 api 上有一个服务方法,可以调用它来检查我的数据库连接的健康状况。
该方法是从属性文件中提取查询字符串(取决于数据库供应商,目前使用 Sybase 和 HSQL,将来更多),并执行它。然后该方法让调用者知道它是成功还是失败。
除此之外,我还使用Query.setHint("javax.persistence.query.timeout") 设置查询超时:
javax.persistence.EntityManager entityManager;
...
Query heartbeatQuery = entityManager.createNativeQuery(heartbeatQueryString);
heartbeatQuery.setHint("javax.persistence.query.timeout", heartbeatTimeout);
heartbeatQuery.getResultList();
我的问题是 timeout 属性对我的 Sybase DB 有效,但对我的 HSQL DB 无效。听起来这取决于供应商,所以我不确定它什么时候可以工作。
有没有更好的方法来通用测试数据库连接并包含某种超时参数?
【问题讨论】: