JDBC数据库连接池之dbcp

Posted 濮成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC数据库连接池之dbcp相关的知识,希望对你有一定的参考价值。

一、连接池的作用

数据库的连接是一种很重要的资源,如果一个项目比较小,连接数据库的次数比较少,我们可以采取直连的方式:“获取连接----使用----关闭连接”。但是如果一个网站访问量很大,假如同时有几百万个用户,这时候就会创建几百万个连接,这样就很容易使数据库崩溃,从而使网站瘫痪。这时候数据库的连接池技术就可以起到作用了,维护连接池中的连接个数,如果来个请求连接,先看连接池中是否有空闲的连接,如果有就分配出去,用完就释放,否则这个请求就必须等待。这就很好的解决了数据库的压力。这就像去餐厅一样,人多的时候我们就得排号等待空闲的位置。

二、dbcp的使用

1.导入jar包。

dbcp依赖3个jar包。

commons-dbcp2-2.1.1.jar

commons-logging-1.1.1.jar

commons-pool2-2.4.2.jar

另外连接数据库还需要单独的jar包,我的数据库是mysql,所以我用的是:mysql-connector-java-5.1.14.jar

 

2.配置参数

方式1.:通过配置文件配置(dbcp.properties)

1 driverClassName=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost/paper_tag
3 username=root
4 password=admin
5 maxActive=30
6 maxIdle=10
7 maxWait=1000
8 initialSize=5
View Code

 

方式2:通过代码配置

       BasicDataSource bds = new BasicDataSource();  
       bds.setUrl(url);  
       bds.setDriverClassName(driverClassName);  
       bds.setUsername(username);  
       bds.setPassword(password);  
       bds.setInitialSize(initialSize);  
       bds.setMaxActive(maxActive);  
       bds.setMinIdle(minIdle);  
       bds.setMaxIdle(maxIdle);  
       bds.setMaxWait(maxWait);  

  

3. 获取连接

  • 下面是获取连接的类DBCPUtil

    private static DataSource ds;
    
        private static final String configFile = "/dbcp.properties";
    
        public DBCPUtil() {
            initDBCP();
        }
    
        private void initDBCP() {
            Properties prop = new Properties();
            try {
                prop.load(Object.class.getResourceAsStream(configFile));
                ds = BasicDataSourceFactory.createDataSource(prop);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public Connection getConn() {
            Connection conn = null;
            if(ds != null) {
                try {
                    conn = ds.getConnection();
                    conn.setAutoCommit(false);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return conn;
        }
    
        public static void main(String[] args) {
            DBCPUtil db = new DBCPUtil();
            System.out.println(db.getConn());
        }
    }
    

      

     

以上是关于JDBC数据库连接池之dbcp的主要内容,如果未能解决你的问题,请参考以下文章

DBCP连接池的使用

三种数据库连接池的配置及使用(For JDBC)

开源数据库连接池之C3P0

DBCP,C3P0与Tomcat jdbc pool 连接池的比较

数据库连接池之Druid

DBCP 连接池的使用