6

在下面的示例中,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);
    }
}

也就是说,它是否重用了第一个查询的连接?我们假设它是使用基本数据源(不是池数据源)构建的。

4

1 回答 1

9

这取决于 JdbcTempate 的 DataSource。如果您提供了一个连接池,例如 Apache commons-dbcp,那么 DBCP 将尽最大努力重用连接。如果您使用 Spring JDBC 的 DriverManagerDataSource,则将在每个 JdbcTemplate.query 调用上创建/关闭一个新连接。

于 2013-02-28T05:26:04.647 回答