处理JDBC关闭的连接

时间:2019-03-26 00:54:25

标签: java mysql postgresql jdbc database-connection

如果连接关闭(例如,在数据库服务器上,不是因为我将其关闭),我想自动重新连接并重新发送上一个SQL查询。

我知道在发送每个查询之前我可以做connection.isValid()(在大多数驱动程序实现中只是SELECT 1),但这很浪费。我将为每个查询添加往返延迟。

我想要的是更多类似的东西:

  • 将查询发送到数据库
  • 如果连接断开,请重新连接并重新发送相同的查询
  • 如果无法重新连接,请关闭连接Exception

有什么建议吗?我无法想象我是第一个想要这样的人。

我正在考虑在驾驶员的java.sql.Connection周围做一个包装纸,并在幕后运行此算法,但是如果有东西存在,我希望不必重新发明它(我尝试用Google搜索,但什么也找不到)。

PS:我不需要连接池,因为我将在AWS Lambda实例中使用该连接池,并且我知道的所有连接池都将在每次查询之前运行isValid

1 个答案:

答案 0 :(得分:0)

在重新建立断开的连接之后,在java.sql.Connection周围编写自己的包装程序以捕获错误并重试语句听起来很吸引人,但随后还需要编写自己的PreparedStatement,依此类推,对吧?

最好将所有JDBC调用集中在应用程序中的几个位置,即为JDBC调用编写自己的(精简)抽象。然后,您可以将重试魔术放在一处。

我肯定会使用连接池。任何值得使用的连接池都可以配置为将查询发送到服务器。即使您无法避免这种情况,它也比打开和关闭数据库连接便宜很多。