我正在尝试使用 EntitityManager/Session 类检查与 jpa 的数据库连接。
为了检查这两种情况(已连接/未连接),我只需在运行代码之前启动/停用服务 mysql。
向数据库询问简单的 sql 查询是不可能的,因为它没有涵盖所有情况。
我已经试过了:
Session session = entityManager.unwrap(Session.class)
session.isConnected();
但这总是返回 true...
当我禁用 mySQL 服务时,我希望 session.isConnected() 返回 false,但它总是返回 true;
是否有任何其他方法来检查数据库连接(可能使用任何其他类)?
最佳答案
简答:不要
长答案:如果您正在开发一个很重要的应用程序,您可能会使用某种数据库连接池框架,例如
这将为您管理许多重要方面,包括连接生命周期。例如,在 tomcat jdbc 中,您可以指定:
testOnBorrow="true"
validationQuery="select 1 from sysibm.dual"
这在 IBM DB2 数据库上将测试连接是否在您每次使用时都失效,如果选择失败,还会将其换成新连接。这样做,您将永远不必在应用程序代码级别上担心这一点。
关于java - 如何检查你是否仍然使用 jpa 连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525234/