gpt4 book ai didi

java - 处理 JDBC 关闭的连接

转载 作者:行者123 更新时间:2023-11-29 13:41:06 24 4
gpt4 key购买 nike

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

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

我想要的更像是:

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

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

我正在考虑围绕我的驱动程序的 java.sql.Connection 制作一个包装器并在幕后运行这个算法,但如果有什么东西在那里我会很感激不必重新发明轮子(我试图用谷歌搜索它,但找不到任何东西)。

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

最佳答案

围绕 java.sql.Connection 编写自己的包装器以捕获错误并在重新建立断开的连接后重试语句听起来很吸引人,但是您还需要编写自己的 PreparedStatement等等,对不对?

将所有 JDBC 调用集中在应用程序的几个地方可能是一个更好的主意,即,为 JDBC 调用编写自己的(瘦)抽象。然后你可以把你的重试魔法放在一个地方。

我肯定会使用连接池。任何有值(value)的连接池都可以配置为向服务器发送查询。即使无法避免,它也比打开和关闭数据库连接便宜得多。

关于java - 处理 JDBC 关闭的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com