在下面的示例中,JdbcTemplate是创建两个连接还是一个?
public class MyDao {
private JdbcTemplate jdbcTemplate;
public List<Data1> getData1() {
return jdbcTemplate.query(mySql, myParams, myCallback);
}
public List<Data2> getData2() {
jdbcTemplate.query(mySql2, myParams2, myCallback2);
}
}
public class Main {
public static void main(String[] args) {
MyDao dao = new MyDao();
List<Data1> d1 = dao.getData1();
List<Data2> d2 = dao.getData2();
doStuff(d1, d2);
}
}
也就是说,它是否重用了第一个查询的连接?我们假设它是使用基本数据源(不是池数据源)构建的。
答案 0 :(得分:7)
这取决于JdbcTempate的DataSource。如果您提供了连接池,例如Apache commons-dbcp,那么DBCP将尽力重用Connections。如果您使用Spring JDBC的DriverManagerDataSource,将在每个JdbcTemplate.query调用上创建/关闭一个新的Connection。