java - 如何检查你是否仍然使用 jpa 连接到数据库

标签 java mysql jpa

我正在尝试使用 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/

相关文章:

java - 计算二值化图像中的对象,坐标超出范围

java - 无法转换 [java.lang.String] 类型的属性值

hibernate - JPA 2.0 : How to avoid full class name in `SELECT NEW full.class.Name` ?

java - JPA:数据库生成的列

Java:使用参数类型的子类实现Setter方法?

java - 'Book of Vaadin' 中的 Vaadin 示例未编译

mysql - 如何在 firebird 中插入另一个表中的行?

java - 如何让 Spring JPA、Hibernate 和 OSGi 发挥出色?

java - 通过 CMD/Registry 禁用 IPv4

php - 替换 PHP session