23

我正在尝试使用 HikariCP 连接池。我能够让它工作并获得我可以使用的连接。我不确定将连接返回到池的最佳方法是什么。

我有以下问题:

  • 我应该在完成后关闭连接,依靠idleTimeoutmaxLifetime设置,还是有另一个我可以使用的调用,以免占用池中的连接?
  • 如果我关闭连接(而不是返回池),这不会导致创建额外的连接对象以满足连接池大小的要求吗?

寻找有用的建议。

4

1 回答 1

64

与大多数连接池一样,当您请求时,Hikari 不会为您提供实际的 JDBC 连接。相反,它为您提供了一个实现Connection接口的代理。在 Hikari 的情况下 - 它是一个ConnectionProxy对象。

此代理有几个目的,其中主要是 - 将打开/关闭连接和语句的控制权从您手中转移到连接池中。这会自动发生,您应该像往常一样使用您的连接。这包括在使用后关闭它们。

如果您查看Hikari 的源代码,特别是在ConnectionProxy类中,您会发现该close()方法与标准方法有很大不同。代码如下:

将连接标记为已关闭,进行清理,重置底层连接状态和参数。

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

于 2014-08-18T16:03:57.940 回答