zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    哈夫曼(Huffman)编码
    面向对象的3个基本要素和5个基本设计原则(整理)
    面向对象设计原则OO
    Java多线程中start()和run()的区别
    HBase入门
    SparkGraphXTest.scala
    IntellijIdea中常用的快捷键
    SparkSQLTest.scala
    SparkStreamingTest.scala
    (转)理解POST和PUT的区别,顺便提下RESTful
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15464343.html
Copyright © 2011-2022 走看看