使用C3P0管理数据库连接,继续我们的JDBC封装
关于数据库连接池以前只会在Spring,hibernate中集成使用,在这里重新对c3p0认识一番
推荐一篇文章颇为强悍 http://my.oschina.net/lyzg/blog/55133
我就是通过这篇文章学习的,没办法英文的咱看不懂啊
其实默认的配置已经非常好了,要不怎么能成为默认呢,哈哈!
c3p0.driverClass=com.mysql.jdbc.Driver c3p0.jdbcUrl=jdbc:mysql://127.0.0.1:3306/helloworld c3p0.user= c3p0.password=
以上为最简配置,默认名为c3p0.properties
使用c3p0 我们只需要更改获取数据库连接的代码就可以了
private static ComboPooledDataSource dataSource = new ComboPooledDataSource(); private Connection getConnection() throws DBException{ try { return dataSource.getConnection(); } catch (SQLException e) { throw new DBException("数据库连接出错", e); } }
如此简单。。。。为了看到c3p0的效果,进行了如下的测试
DBC3P0Manager dm = DBC3P0Manager.getInstance(); for(int i = 0;i < 100;i++){ long beginTime = System.currentTimeMillis(); dm.execQuery("select * from teacher"); long endTime = System.currentTimeMillis(); System.out.println("第" + i+ "次 " + (endTime-beginTime)); } DBManager m = DBManager.getInstance(); for(int i = 0;i < 100;i++){ long beginTime = System.currentTimeMillis(); m.execQuery("select * from teacher"); long endTime = System.currentTimeMillis(); System.out.println("第" + i+ "次 " + (endTime-beginTime)); }
发现c3p0的第一次查询很慢大约1秒左右,而往后的次数也就3ms左右,而没有使用c3p0的每次都要超过10ms。