Javaweb笔记(十四):MySql数据库连接池

使用DBCP连接池连接数据库

在使用dbcp连接池是需要下载相关的jar包进行配置


072001.png

使用DBCP常用方法说明:

方法 说明
setUsername(String userName) 设置建立连接数据库的用户名
setPassword(String password) 设置建立连接数据库的密码
setUrl(String url) 设置连接数据库的地址
setDriverClassName( String driverClassName) 设置JDBC驱动类的名称
getConnection() 获取连接数据库的连接,返回值Connection对象
setMaxIdle(int maxIdle) 设置连接池最大空闲连接数
setMinIdel(int minIdel) 设置连接池最小空闲连接数

使用dbcp 连接池进行数据库的连接 连接池对象BasicDataSource操作连接池的配置信息,BasicDataSource实现了DataSource接口;

public class DBPCConnectionPool {

    /**
     * 使用dbcp来进行连接池的连接和获取连接对象
     * 
     * @throws SQLException
     */
    @Test
    public void connectionPoolByApacheCommoms() throws SQLException {
        // 获取连接池对象 BasicDataSource
        BasicDataSource dataSource = new BasicDataSource();
        // 加载数据库驱动
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        // 设置数据库地址
        dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
        // 设置连接数据库用户
        dataSource.setUsername("root");
        // 设置连接数据库密码
        dataSource.setPassword("12345678");

        // 获取连接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        System.out.println(connection.getClass().getName());
        // 将将连接对象归还连接池
        connection.close();
    }
}

代码中connection.close()方法不是关闭连接的操作,是将当前使用连接归还到连接池中;

使用c3p0连接池连接数据库

在使用c3p0连接池是需要下载相关的jar包进行配置


072002.png

使用c3p0连接池操作数据库中,使用到的连接连接池对象是ComboPooledDataSource,通过连接池对象可以对连接池的一些属性进行配置,数据库驱动,数据库地址,连接数据库的用户名,密码等,但是在使用c3p0连接池是,会有三种连接方式:
1.java代码进行连接池对象的设置
2.加载配置文件默认配置
3.加载配置文件中自定义的配置信息
使用此c3p0连接池连接数据库准备条件:
1.准备c3p0的jar包
2.创建c3p0-config.xml配置文件(使用配置文件时创建,创建的配置文件名称必须为"c3p0-config.xml",且文件路径必须在项目src根目录下

1.连接池配置信息-java代码配置
/**
     * 连接池配置信息-java代码配置
     * 
     * @throws PropertyVetoException
     * @throws SQLException
     */
    @Test
    public void connectPoolByC3P0CodeSettings() throws PropertyVetoException, SQLException {
        // 初始化连接池对象
        ComboPooledDataSource dataSource = new ComboPooledDataSource();

        // 设置数据库驱动
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        // 设置数据库地址
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/testdb");
        // 设置数据库登录名
        dataSource.setUser("root");
        // 设置数据库登录密码
        dataSource.setPassword("12345678");

        // 连接池最大容量
        dataSource.setMaxPoolSize(20);
        // 初始化连接池容量
        dataSource.setInitialPoolSize(10);
        // 设置连接池容量满之后创建连接对象的增量
        dataSource.setAcquireIncrement(5);
        // 获取连接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        // 将连接对象归还连接池
        connection.close();
    }
2.加载配置文件默认配置

在src根目录下创建文件c3p0-config.xml,文件内容为:



  
    30000
    30
    10
    30
    100
    10
    200
    com.mysql.jdbc.Driver
    jdbc:mysql://localhost:3306/testdb
    root
    12345678
  

  
   
    50
    100
    50
    1000

    
    0 
    5
  

配置文件创建成功则撸一波代码,来加载默认配置信息获取连接池对象。

/**
     * 使用c3p0默认的配置文件进行连接池对象的创建
     * 
     * 在创建c3p0连接池对象时,会自动扫描项目src根目录下是否存在c3p0-config.xml配置文件,存在则加载配置文件中 默认的配置信息
     * 
     * @throws SQLException
     */
    @Test
    public void connectionPoolByC3P0DefaultConfig() throws SQLException {
        // 初始化连接池对象
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        // 获取连接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        // 将连接对象归还连接池
        connection.close();
    }
3.加载配置文件中自定义的配置信息

在加载配置文件时,我们代码中会使用ComboPooledDataSource类有参的构造方法:

    /**
     * 使用c3p0自定义的配置文件进行连接池对象的创建
     * 在创建c3p0连接池对象时,会自动扫描项目src根目录下是否存在c3p0-config.xml配置文件,存在则加载配置文件中,则在初始化
     * 连接池对象通过连接池对象构造方法传参来进行培配置信息的加载
     * 
     * @throws SQLException
     */
    @Test
    public void connectionPoolByC3P0CoustomConfig() throws SQLException {
        // 初始化连接池对象
        ComboPooledDataSource dataSource = new ComboPooledDataSource("coustom-config");
        // 获取连接对象
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        // 将连接对象归还连接池
        connection.close();
    }

你可能感兴趣的:(Javaweb笔记(十四):MySql数据库连接池)