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

Java 将连接对象返回到HikariCP池的最佳方法,java,connection-pooling,hikaricp,Java,Connection Pooling,Hikaricp,我正在尝试使用HikariCP连接池。我能够让它工作,并获得一个我可以使用的连接。我不确定将连接返回到池的最佳方法是什么 我有以下问题: 完成后是否应关闭连接,请依靠idleTimeout 还有maxLifetime设置,或者是否还有其他调用可以使用 为了不占用游泳池的连接 如果我关闭连接(而不是返回池),我会 这不会导致创建其他连接对象 是否满足连接池大小的要求 寻找有用的建议。与大多数连接池一样,Hikari不会在您请求JDBC连接时提供实际的JDBC连接。它所做的是为您提供一个实现连接

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

我有以下问题:

  • 完成后是否应关闭连接,请依靠idleTimeout 还有maxLifetime设置,或者是否还有其他调用可以使用 为了不占用游泳池的连接
  • 如果我关闭连接(而不是返回池),我会 这不会导致创建其他连接对象 是否满足连接池大小的要求

寻找有用的建议。

与大多数连接池一样,Hikari不会在您请求JDBC连接时提供实际的JDBC连接。它所做的是为您提供一个实现
连接
接口的代理。对于Hikari,它是一个
ConnectionProxy
对象

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

如果查看,尤其是
ConnectionProxy
类,您会发现
close()
方法与标准方法有很大不同。守则内容如下:

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


因此,只需调用
close()
即可清理并返回到池中的连接。

不确定Hikari,但在大多数连接池中,您得到的不是实际的连接,而是一个具有不同
close
方法(除了其他方法)的包装器。所说的close方法实际上是返回到池的连接,而不是关闭它。是的,我对此也感到困惑,但在浏览了它们的源代码之后,我可以确认,只需调用.close()是安全返回池连接所需的全部操作。如果我关闭数据源而不是通过调用shutdown()关闭连接,会产生什么影响?@IrfanNasim如果关闭
数据源
,它将关闭整个池,以及与之相关的任何活动或非活动连接。@Irfansim我只能同意已经在那里的评论-通过阅读文档,这个问题可以简单地回答。这也与这个问题或我对它的回答没有什么关系。