是否可以不在每个方法中关闭javax.sql.DataSource?



我有一个弹簧应用程序,我在其中使用javax.sql.DataSource连接到Oracle数据库。我已将其配置为豆子。我以多种方法使用它。但是除了在 @PreDestroy 方法中之外,我从不调用 .close (( 方法。

我在多种方法中使用它,如下所示:

private void method1(String query){
Connection conn = dataSource.getConnection();
try (PreparedStatement st = conn.prepareStatement(query);
ResultSet rs = st.executeQuery()) {
//do some task
}
}
private void method2(String query){
Connection conn = dataSource.getConnection();
try (PreparedStatement st = conn.prepareStatement(query);
ResultSet rs = st.executeQuery()) {
//do some task
}
}

PreparedStatement 和 ResultSet 都在 try-with-resources 块内,这将自动关闭它们。我没有将连接放在试用资源中,因为我想在多个地方使用相同的连接。

明智吗?我只举了两个例子。实际上,我在 25 种方法中以这种方式使用它。

关于连接的最佳实践是对一个逻辑事务使用单个连接(这可能是一个简单的选择,也可能是多个插入/更新/选择语句的组合,这些语句应该一次执行并相互依赖(,否则如果你有一堆不相关的查询,最好关闭连接。

请记住,数据库有自己的连接池,因此,如果这是您想要使用单个连接的原因,则可以同时打开多个连接。

相关内容

最新更新