首页 > 解决方案 > 如何检查您是否仍然使用 jpa 连接到数据库

问题描述

我正在尝试使用 EntityManager/Session 类检查与 jpa 的数据库连接。

要检查这两种情况(已连接/未连接),我只需在运行代码之前启动/停用服务 mysql。

向数据库询问简单的 sql 查询是不明智的,因为它并不涵盖所有情况。

我已经尝试过:

Session session = entityManager.unwrap(Session.class)
session.isConnected();

但这总是返回true...

当我禁用 mySQL 服务时,我希望 session.isConnected() 返回 false,但它总是返回 true;

有没有其他方法可以检查数据库连接(可能使用任何其他类)?

标签: javamysqljpa

解决方案


简短的回答:不要

长答案:如果您正在开发一个重要的应用程序,您可能会使用某种数据库连接池框架,例如

这将为您管理许多重要方面,包括连接生命周期。例如,在 tomcat jdbc 中,您可以指定:

testOnBorrow="true"
validationQuery="select 1 from sysibm.dual"

这在 IBM DB2 数据库上将在您每次使用连接时测试连接是否过时,如果选择失败,还会将其换成新连接。通过这种方式,您将永远不必在应用程序代码级别上担心这一点。


推荐阅读