数据库连接池上的try-with资源是否每次都会关闭连接?

我正在使用HikariDataSource管理到我的Postgres DB的连接池。

我正在尝试使用一种资源来从HikariDataSource获取连接,我想了解以下内容:

  1. 每次连接是否真的关闭?

  2. 如果可以,以这种方式处理准备好的语句没有优点吗?

  3. 在连接池中使用预准备语句的最佳实践是什么?

这是我的连接代码:

<OnSwipe
    app:dragDirection="dragUp"
    app:onTouchUp="autoCompleteToEnd"
    app:touchAnchorId="@+id/card"
    app:touchAnchorSide="top"
    app:touchRegionId="@+id/card" />

以下是使用预准备语句执行查询的示例:

public <T> CompletableFuture<T> withConnection(FunctionThatThrowsChecedException<Connection,T> action) {
        return CompletableFuture.supplyAsync(() -> {
            try (Connection connection = ds.getconnection()) {
                return action.apply(connection);
            } catch (SQLException | IOException e) {
                throw new RuntimeException("error while getting collection",e);
            }
        },workerThreads);
    }
sonyjkjkjk 回答:数据库连接池上的try-with资源是否每次都会关闭连接?

  1. 否,调用close()时,连接将返回到池中。连接池的Connection包装器会覆盖close(),这样连接池才能正常工作。
  2. 它没有关闭。
  3. 就像平常一样。使用连接池很少需要任何特殊的操作,如果您打算调整连接池,则需要测量性能并真正知道您要执行的操作。
本文链接:https://www.f2er.com/3015437.html

大家都在问