将连接对象返回到hikaricp池的最佳方法

16 java connection-pooling hikaricp

我正在尝试使用hikaricp连接池.我能够让它工作并获得我可以使用的连接.我不确定返回池连接的最佳方法是什么.我应该在完成后关闭连接,依赖idletimeout和maxlifetime设置,还是有另一个我可以使用的呼叫,以免占用池中的连接?如果我关闭连接(而不是返回池),是否会导致创建其他连接对象以满足连接池大小的要求?寻找有用的建议

Ord*_*ous 46

与大多数连接池一样,Hikari在您要求时不会为您提供实际的JDBC连接.它的作用是为您提供实现Connection接口的代理.在Hikari的情况下 - 它是一个ConnectionProxy对象.

此代理用于一些目的,主要是 - 控制打开/关闭连接和语句远离您并进入连接池.这是自动发生的,您应该像往常一样使用您的连接.这包括在使用后关闭它们.

如果你看一下Hikari源代码ConnectionProxy,特别是在课堂上,你会发现这个close()方法与标准方法有很大的不同.代码读作:

将连接标记为已关闭,执行清理,重置基础连接状态和参数.

因此,简单地调用close()只会清理并返回到池的连接.

  • 是的,我也对此感到困惑,但在浏览了他们的源代码后,我可以确认,只需调用 .close() 就可以安全地将连接返回到池中。 (2认同)
  • @IrfanNasim 如果您关闭 `dataSource`,它将关闭整个池以及与之关联的任何活动或非活动连接。 (2认同)