站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题关于DBCP连接池效率的问题

关于DBCP连接池效率的问题

摘要: 关于DBCP连接池效率的问题


首先我尝试用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个数量级?




每次prepareStatement都新new出一个BasicDataSource,效率不低才怪
把bds改为public static,每次使用时只bds.getConnection()应该就好了,初始化它的那段代码放到别的代码里,就调一次就行


↑返回目录
前一篇: 一个菜鸟的jsp问题,谁帮帮我啊
后一篇: cos做表单内容上传,出现乱码