使用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。

 

posted @ 2013-12-16 16:08  菜菜小三  阅读(369)  评论(0编辑  收藏  举报