JDBC学习笔记(dbcp数据库连接池)

            <p>常用的数据库连接池有俩种:dbcp和c3p0</p>

数据库连接池作用:可以控制数据库连接池来优化效率,使得连接不必频繁获得和关闭操作

dbcp 数据库连接池

使用前必须导入:mysql-connector-java-5.1.7-bin.jar,commons-dbcp-1.4.jar 和 commons-pool-1.5.5.jar 俩个 jar 包

dbcp 数据库连接池的创建有俩种方式。

 

第一种:提供 BasicDataSource 类,来创建连接池

 BasicDataSource 里提供了以下方法:

         * setInitialSize(int count): 设置连接池初始化连接个数
         * setMaxActive(int count): 设置同一时刻允许向数据库同时申请连接个数
         * setMinIdle(int count): 设置连接池允许存在的最少空闲连接数目
         * setMaxWait(int count): 设置向连接池申请连接的时间(单位为毫秒),超过时间会抛出异常

         * getConnection(): 获得连接对象 Connection

以下为操作示例:

BasicDataSource basicDataSource=new BasicDataSource();

// 设置连接池操作信息
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");// 设置数据库类型
basicDataSource.setUrl("jdbc:mysql://localhost:3306/test");// 设置连接数据库名
basicDataSource.setUsername("root");    // 设置用户名
basicDataSource.setPassword("123456");  // 设置登录密码

// 设置连接池初始化连接个数
basicDataSource.setInitialSize(10);

// 设置同一时刻内允许向连接池获得连接的最大连接数
basicDataSource.setMaxActive(20);

// 设置在连接池内允许保存的最小空闲连接数
basicDataSource.setMinIdle(5);

// 等待连接池分配连接的最长时间(单位为毫秒),超出该时间抛出异常,
basicDataSource.setMaxWait(5*1000);

// 从连接池获得连接
Connection connection=basicDataSource.getConnection();

System.out.println(connection.getClass());

第二种方法:提供 DataSource 类,来创建连接池

         BasicDataSourceFactory().createDataSource(properties):通过配置文件获得 DataSource 对象
         getConnection(): 获得连接
         注意:其余设置均可在配置文件完成,但需要名字小写开头且与方法名字对应

         * 如:
         * driverClassName=com.mysql.jdbc.Driver
         * url=jdbc:mysql://localhost:3306/test
         * maxActive=20

    此方法通过读取配置文件设置好数据库连接池的设置

            先在 src 目录下创建一个 dbcp.properties 配置文件, 设置好以下参数

                driverClassName=com.mysql.jdbc.Driver
                url=jdbc:mysql://localhost:3306/test
                username=root
                password=123456
                initialSize=10
                maxActive=20
                minIdle=5

                maxWait=5000

          再回到创建方法里:

                // 第二种获得连接的方法
                Properties properties=new Properties();
                InputStream input=Use_dbcp.class.getClassLoader().getResourceAsStream("dbcp.properties");
                properties.load(input);

               // 通过配置文件设置连接池所有需要的参数
              DataSource datasource=new BasicDataSourceFactory().createDataSource(properties);

              System.out.println(datasource.getConnection());