关于DBCP连接池效率的问题
笨马克 2006-09-30 03:08:34 首先我尝试用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个数量级?