首先我尝试用jdbc直接连数据库,代码为:
    public Static Connection getConnection() throws Exception{
         Class.forName("oracle.jdbc.driver.OracleDriver");
                String url = "jdbc:oracle:thin:@xx.x.x.xxx:1521:sid";
                String user = "user";
                String passwd = "pwd";
        return  DriverManager.getConnection(url, user, passwd);
    }然后我尝试用dbcp,代码为:
  public static Connection getConnection() throws SQLException{
      BasicDataSource bds = new BasicDataSource();
      bds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
      bds.setUrl("jdbc:oracle:thin:@xx.x.x.xxx:1521:sid");
      bds.setUsername("user");
      bds.setPassword("pwd");
      bds.setMaxActive(50);
      bds.setMaxIdle(10);
      bds.setMaxWait(100000);
      return bds.getConnection();
  }对于连接效率的测试,我用的是如下的代码:
for (int i=0;i<100;i++){
ps = this.getConnection().prepareStatement(sql_test);
ps.setInt(1,i);
ps.execute();
ps.close();
}
结果为:
jdbc连接:平均10s插入一条数据
dbcp连接:平均10s插入一条数据另外,我用spring+hibernate,连接也用dbcp(默认配置),在dao层通过session来取得connection来执行sql语句,效率非常高,插入1000条不需要1s.请问:
1.是我的dbcp的使用有问题吗?为什么效率这么低?
2.为什么通过spring+hibernate来调用dbcp,效率会高n个数量级?