开发者社区> 问答> 正文

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

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

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

每次连接是否真的关闭?

如果是,那么以这种方式使用准备好的语句没有优势吗?

将准备好的语句与连接池一起使用的最佳实践是什么?

这是我的连接代码:

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);
    }

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

public CompletableFuture<Integer> delete(String batchId) {
        return postgresProvider.withConnection(connection -> {
            PreparedStatement ps = connection.prepareStatement(DELETE_QUERY);

            ps.setString(1, batchId);
            return ps.executeUpdate();
        });
    }

展开
收起
垚tutu 2019-11-28 18:38:03 852 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载