我以下面的方式在jdbctemplate中获取连接: -
getJdbcTemplate().getDataSource().getConnection()
是否需要以上述方式关闭提取的连接? Spring JDBCTemplate API声明连接闭包将自动处理,因此我不确定这是否正确发生。
http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html
答案 0 :(得分:2)
当您从DataSource
获取JdbcTemplate
并使用该Connection
获取JdbcTemplate
时,您基本上完全绕过了Connection
。您现在有一种非常复杂的方式来获取新的Connection
。因为这个连接不是由Spring管理的,所以你自己也需要关闭它并应用异常处理。
最好使用ConnectionCallback
来获得JdbcTemplate
。然后,Connection
将管理getJdbcTemplate().execute(new ConnectionCallback<Void>() {
public Void doInConnection(Connection conn) {
// Your JDBC code here.
}
});
并执行所有资源处理。
JdbcTemplate
最好使用其他{{1}}方法之一并编写适当的代码,这样可以避免使用简单的JDBC代码。