c3p0、dbcp

来源:互联网 发布:淘宝天天特价秒杀 编辑:程序博客网 时间:2024/06/05 05:20

这里写图片描述

dbcp.properties

username=rootpassword=rootdriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql:///mydatabaseinitialSize=10maxActive=50minIdle=5maxWait=5000

c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?><c3p0-config>    <named-config name="helloc3p0">        <!-- 指定连接数据源的基本属性 -->        <property name="user">root</property>        <property name="password">root</property>        <property name="driverClass">com.mysql.jdbc.Driver</property>        <property name="jdbcUrl">jdbc:mysql:///mydatabase</property>        <!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->        <property name="acquireIncrement">5</property>        <!-- 初始化数据库连接池时连接的数量 -->        <property name="initialPoolSize">5</property>        <!-- 数据库连接池中的最小的数据库连接数 -->        <property name="minPoolSize">5</property>        <!-- 数据库连接池中的最大的数据库连接数 -->        <property name="maxPoolSize">10</property>        <!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->        <property name="maxStatements">20</property>        <!-- 每个连接同时可以使用的 Statement 对象的个数 -->        <property name="maxStatementsPerConnection">5</property>    </named-config></c3p0-config>

JdbcTest

package com.godinsec;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;import org.junit.Test;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JdbcTest {    @Test    public void testC3poWithConfigFile() throws Exception{        DataSource dataSource =                 new ComboPooledDataSource("helloc3p0");          System.out.println(dataSource.getConnection());         ComboPooledDataSource comboPooledDataSource =                 (ComboPooledDataSource) dataSource;        System.out.println(comboPooledDataSource.getMaxStatements());     }    @Test    public void testC3P0() throws Exception{        ComboPooledDataSource cpds = new ComboPooledDataSource();        cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver                    cpds.setJdbcUrl( "jdbc:mysql:///mydatabase" );        cpds.setUser("root");                                          cpds.setPassword("root");           System.out.println(cpds.getConnection());     }    /**     * 1. 加载 dbcp 的 properties 配置文件: 配置文件中的键需要来自 BasicDataSource 的属性. 2. 调用     * BasicDataSourceFactory 的 createDataSource 方法创建 DataSource 实例 3. 从     * DataSource 实例中获取数据库连接.     */    @Test    public void testDBCPWithDataSourceFactory() throws Exception {        // 加载配置信息        Properties properties = new Properties();        InputStream inStream = JdbcTest.class.getClassLoader()                .getResourceAsStream("dbcp.properties");        properties.load(inStream);        // 调用 BasicDataSourceFactory 的 createDataSource 方法        // 创建 DataSourc实例        DataSource dataSource = BasicDataSourceFactory                .createDataSource(properties);        // 测试        System.out.println(dataSource.getConnection());        // 获取配置信息的内容        BasicDataSource basicDataSource = (BasicDataSource) dataSource;        System.out.println(basicDataSource.getMaxWait());    }    /**     * 使用 DBCP 数据库连接池 1. 加入 jar 包(2 个jar 包). 依赖于 Commons Pool 2. 创建数据库连接池 3.     * 为数据源实例指定必须的属性 4. 从数据源中获取数据库连接     */    @Test    public void testDBCP() throws SQLException {        // javax.sql.DataSource--import org.apache.commons.dbcp.BasicDataSource;        // org.apache.commons.dbcp.BasicDataSource;        BasicDataSource dataSource = new BasicDataSource();        // 2. 为数据源实例指定必须的属性        dataSource.setUsername("root");        dataSource.setPassword("root");        dataSource.setUrl("jdbc:mysql:///mydatabase");        dataSource.setDriverClassName("com.mysql.jdbc.Driver");        // 3. 指定数据源的一些可选的属性.        // 1). 指定数据库连接池中初始化连接数的个数        dataSource.setInitialSize(5);        // 2). 指定最大的连接数: 同一时刻可以同时向数据库申请的连接数        dataSource.setMaxActive(5);        // 3). 指定小连接数: 在数据库连接池中保存的最少的空闲连接的数量        dataSource.setMinIdle(2);        // 4).等待数据库连接池分配连接的最长时间. 单位为毫秒. 超出该时间将抛出异常.        dataSource.setMaxWait(1000 * 5);        // 4. 从数据源中获取数据库连接        Connection connection = dataSource.getConnection();        System.out.println(connection);    }}
0 0
原创粉丝点击