数据库连接池的学习(二)——DBCP连接池

       DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar。

       由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。

commons-dbcp.jar:连接池的实现

commons-pool.jar:连接池实现的依赖库

首先测试硬编码的方式进行测试:

import org.apache.commons.dbcp.BasicDataSource;
import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBCP1 {
    //硬编码方式,就是在代码中添加配置
    @Test
    public void t() throws SQLException {
        BasicDataSource bds = new BasicDataSource();
        bds.setDriverClassName("com.mysql.jdbc.Driver");
        bds.setUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");
        bds.setUsername("root");
        bds.setPassword("1234");
        Connection conn = bds.getConnection();
        PreparedStatement ps = conn.prepareStatement("select * from students");
        ResultSet rs = ps.executeQuery();
        while(rs.next()){
            String sname = rs.getString("sname");
            System.out.println(sname);
        }
        conn.close();



    }
}

 

接着使用软编码的方式:

先写一个配置文件:info.properties

#\u8FDE\u63A5\u8BBE\u7F6E
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=1234
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxActive=50
#<!-- 最大空闲连接 -->
maxIdle=20
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000

代码展示:

import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class DBCP2 {
    @Test
    public void t() throws Exception {
        BasicDataSourceFactory bdsf = new BasicDataSourceFactory();
        Properties p = new Properties();
        InputStream is = BasicDataSourceFactory.class.getResourceAsStream("/info.properties");
        p.load(is);
        DataSource ds = bdsf.createDataSource(p);
        Connection conn = ds.getConnection();
        PreparedStatement ps = conn.prepareStatement("select * from students");
        ResultSet rs = ps.executeQuery();
        while(rs.next()){
            String sname = rs.getString("sname");
            System.out.println(sname);
        }

        conn.close();  //回收对象
    }


}

猜你喜欢

转载自blog.csdn.net/qq_41061437/article/details/82858800