Spring data jpa 检查与 db 的连接是处于活动状态还是丢失?
唯一的方法是进行查询"选择 1"?
什么都没有。只需执行您的查询。如果连接已断开,则 JDBC 驱动程序将重新连接(如果它支持它,并且您在连接字符串中启用了它 - 大多数不支持它(,否则将出现异常。
如果您检查连接是否已启动,则在您实际执行查询之前,它可能会中断,因此通过检查绝对不会获得任何好处。
也就是说,许多连接池在分发连接之前通过执行类似 SELECT 1 的操作来验证连接。但这只不过是执行查询,因此您也可以执行业务查询。
我们最好的机会是只对一个表执行一个简单的查询,例如:
select 1 from SOME_TABLE;
https://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#isValid%28int%29
如果你可以使用Spring Boot的话。弹簧启动执行器对您很有用。执行器将自动配置,并在激活后,您可以获取已知数据库状态以请求"健康">
http://[CONTEXT_ROOT]/health
并且它会返回,数据库状态如下
{"status":"UP","db":{"status":"UP","database":"PostgreSQL","hello":1}}