10.19JDBC之DBCP连接池的使用

10.19JDBC之DBCP连接池的使用

DBCP连接池简介

简介:

DBCP是 apache 上的一个Java连接池项目

使用方法

  • 导入依赖

  • 调用方法

导入依赖:

        <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-dbcp2</artifactId>
           <version>2.8.0</version>
       </dependency>

调用方法:

package JDBCUtilsNo1;

import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.testng.annotations.Test;

import javax.sql.DataSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

/**
* 测试DBCP连接池方法的使用
* @since JDK 1.8
* @date 2021/10/19
* @author Lucifer
*/
public class DBCPTest {

   //测试DBCP连接池的方法
   //方式一:硬编码方式进行数据库连接
   @Test
   public void testGetConnection() {
       //使用sun公司定义的接口Datasource
       //创建dbcp的数据库连接池
       BasicDataSource source = new BasicDataSource();

       //设置基本信息
       source.setDriverClassName("com.mysql.jdbc.Driver");
       source.setUrl("jdbc:mysql:///test");
       source.setUsername("junkingboy");
       source.setPassword("junkingboy");

       //设置其他涉及数据库连接池管理的相关属性
       /*初始化连接数10个*/
       source.setInitialSize(10);
  }

   //方式二:使用配置文件进行数据库连接
   /*
   由于BasicDataSource不直接提供构造方法,所以要通过BasicDataSourceFactory工厂类创建对象引用
   配置文件的信息通过流的方式进行读取,要创建Properties对象引用
   由于只需要创建一个数据库连接池,所以在构造的时候只需要执行一次即可。
   使用静态代码块进行构造。静态代码块随着类的加载而加载。只执行一次
    */
   @Test
   public void testGetConnection1() throws Exception {
       Connection conn = source.getConnection();
       System.out.println(conn);
  }

   private static DataSource source;
   
   static
  {
       try {
           Properties pros = new Properties();
           //使用类加载器获取配置文件
           /*方式一*/
           InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("DBCP.properties");
           //加载流
           pros.load(is);
           source = BasicDataSourceFactory.createDataSource(pros);
      }catch (Exception e) {
           e.printStackTrace();
      }
  }
}

dbcp连接池常用基本配置属性

  • initialSize:连接池启动时创建的初始化连接数量(默认值为0)

  • maxActive:连接池中可同时连接的最大的连接数(默认值为8)

  • maxIdle:连接池中最大的空闲的连接数,负数表示不设置

  • minIdle:连接池中最小的空闲的连接数

  • maxWait:最大等待时间,当无连接可用时连接池等待连接释放的最大时间,超过时间会抛出异常

  • poolPreparedStatements:开启池的prepared(默认是false,未调整)

  • maxOpenPreparedStatements:开启池的prepared后的同时最大连接数(默认无上限)

  • minEvictableIdleTimeMillis:连接池中连接,在时间段内一直空闲,被逐出连接池的时间

  • removeAbandonedTimeout:超过时间限制,回收没有用(废弃)的连接(默认300s)

  • removeAbandoned:超过removeAbandonedTimeout时间后,是否进行没用(废弃)连接的回收(默认是false)

posted @ 2021-10-26 09:33  俊king  阅读(127)  评论(0编辑  收藏  举报