zoukankan      html  css  js  c++  java
  • DBCP + C3P0 连接池

    DBCP 配置参数如下:

    参数

    默认值

    可选值

    格式

    说明

    username  

         

    用户名

    password  

         

    密码

    url

         

    数据库连接url

    driverClassName 

         

    驱动类

    connectionProperties  

       

     [propertyName=property;]*

    当建立新连接时被发送给JDBC驱动的连接参数

    defaultAutoCommit

    true

    true、false

       

    defaultReadOnly

    driver default

    driver default
    true
    false

     

    默认只读状态,不指定则是驱动的默认值

    defaultTransactionIsolation 

    driver default

    ONE
    READ_COMMITTED
    READ_UNCOMMITTED
    REPEATABLE_READ
    SERIALIZABLE

     

    实物的隔离级别
    ONE 不支持
    READ_COMMITTED 读已提交
    READ_UNCOMMITTED 读未提交
    REPEATABLE_READ 可重复读
    SERIALIZABLE 串行化

    defaultCatalog

         

    默认的database的名称,多数驱动已经在url中指定

    initialSize

    0

     

    非负整数

    初始化连接数

    maxActive

    8

     

    整数

    最大活跃连接数,负数则无限制

    maxIdle

    8

     

    整数

    最大空闲连接数,超出会释放连接

    minIdle

    0

     

    整数

    最小空闲数

    maxWait

    无限

     

    整数

    最大等待时间:当没有可用连接时,连接池等待连接
    被归还的最大时间(以毫秒计数),-1代表无限

    validationQuery

         

    检查连接是否可用的查询语句

    testOnCreate

    false

    true、false

     

    连接被create时是否校验可用,
    validationQuery必须给定合法值

    testOnBorrow

    true

    true、false

     

    连接被get时是否校验可用,
    validationQuery必须给定合法值

    testOnReturn

    false

       

    连接被归还到连接池中时是否校验可用
    validationQuery必须给定合法值

    testWhileIdle

    false

       

    连接被空闲连接回收器检测回收时否校验可用
    validationQuery必须给定合法值

    timeBetweenEvictionRunsMillis

    -1

       

    空闲连接回收器运行周期,毫秒,-1表示不运行

    numTestsPerEvictionRun

    3

       

    在每次空闲连接回收器线程(如果有)
    运行时检查的连接数量

    minEvictableIdleTimeMillis

    1000 * 60 * 30

       

    最小空闲时间,毫秒

    SADpoolPreparedStatements

    false

       

    是否启池的prepared statement 池功能

    maxOpenPreparedStatements

    无限制

       

    statement池能够同时分配的打开的
    statements的最大数量
    (前提:poolPreparedStatements=true)

    accessToUnderlyingConnectionAllowed

    false

    true、false

     

    是否运行获取底层的Connection(驱动提供的连接)
    获取方式:
    Connection conn = ds.getConnection();
    Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();

    removeAbandoned

           

    removeAbandonedTimeout

           

    logAbandoned

    使用DBCP连接池的两种方法:

      方法一:  

     1 String sql = "com.mysql.jdbc.Driver";
     2 String url = "jdbc:mysql//127.0.0.1:3306/mydata";
     3 String user = "root";
     4 String password = "root";
     5 DasicDataSource source = new DasicDataSource();
     6 source.setDriverClassName(sql);
     7 source.setUrl(url);
     8 source.setUserName(user);
     9 source.setPassword(password);
    10 Connection conn = source.getConnection();
    11 PreparedStatement stmt = conn.PreparedStatement("Selet *from student_data where name= ?");
    12 stmt.setString("xiaojiang");
    13 ResultSet rs = stmt.executeQuery();
    14 <!-下面输出省略不写->
    

       方法二:

        把所有参数放入配置文件,如:config.properties

        driverClassName   = com.mysql.jdbc.Driver

        url = jdbc:mysql//127.0.0.1:3306/mydata

        username = root

        password = root

        initialSize = 5

    连接代码如下:    

    //获取配置文件
      Properties prop = new Properties();
      prop.load(new FileReader("config.properties"));

      DasicDataSourceFactory facutry = new DasicDataSourceFactory();
      DataSource source = facutry.createDataSource(prop);
      Connection conn = source.getConnection();
      PreparedStatement stmt = conn.PreparedStatement("Selet *from student_data where name= ?");
      stmt.setString("xiaojiang");
      ResultSet rs = stmt.executeQuery();
    <!-下面输出省略不写->

    C3P0

      配置文件名必须为 c3p0-config.xml

        

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>  
        <!-- This is default config! -->  
        <default-config>  
            <property name="initialPoolSize">10</property>  
            <property name="maxIdleTime">30</property>  
            <property name="maxPoolSize">100</property>  
            <property name="minPoolSize">10</property>  
            <property name="maxStatements">200</property>  
        </default-config>  
      
        <!-- This is my config for mysql--> 
      //自己配置的参数,到时候要使用,直接调用ComboPooledDataSource的时候传个值过来就行了。 <named-config name="mysql"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF8</property> <property name="user">root</property> <property name="password"></property> <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3--> <property name="initialPoolSize">10</property> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 --> <property name="maxIdleTime">30</property> <!--连接池中保留的最大连接数。默认值: 15 --> <property name="maxPoolSize">100</property> <!-- 连接池中保留的最小连接数,默认为:3--> <property name="minPoolSize">10</property> <!--c3p0全局的PreparedStatements缓存的大小。如果maxStatements与maxStatementsPerConnection均为0,则缓存不生效,只要有一个不为0,则语句的缓存就能生效。如果默认值: 0--> <property name="maxStatements">200</property> <!-- 当连接池连接耗尽时,客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限期等待。单位毫秒。默认: 0 --> <property name="checkoutTimeout" value="3000"/> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 --> <property name="acquireIncrement" value="2"/> <!--定义在从数据库获取新连接失败后重复尝试的次数。默认值: 30 ;小于等于0表示无限次--> <property name="acquireRetryAttempts" value="0"/> <!--重新尝试的时间间隔,默认为:1000毫秒--> <property name="acquireRetryDelay" value="1000" /> <!--关闭连接时,是否提交未提交的事务,默认为false,即关闭连接,回滚未提交的事务 --> <property name="autoCommitOnClose">false</property> <!--c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试使用。默认值: null --> <property name="automaticTestTable">Test</property> <!--如果为false,则获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常,但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。默认: false--> <property name="breakAfterAcquireFailure">false</property> <!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 --> <property name="idleConnectionTestPeriod">60</property> <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。默认值: 0 --> <property name="maxStatementsPerConnection"></property> </named-config> <!-- This is my config for oracle --> <named-config name="oracle"> <property name="driverClass">oracle.jdbc.driver.OracleDriver</property> <property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property> <property name="user">scott</property> <property name="password">liang</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> <property name="maxStatements">200</property> </named-config> </c3p0-config>

            

    代码如下:

      //获取配置文件
      DataSource source = new ComboPooledDataSource("自定义配置文件名");
      Connection conn = source.getConnection();
      PreparedStatement stmt = conn.PreparedStatement("Selet *from

      student_data where name= ?");
      stmt.setString("xiaojiang");
      ResultSet rs = stmt.executeQuery();
      <!-下面输出省略不写->

    方法二 :

    //直接设置连接参数

       ComboPooledDataSource source = new ComboPooledDataSource();
      source.setDriverClass("com.mysql.jdbc.Driver");
      source.setJdbcUrl("jdbc:mysql//127.0.0.1:3306/mydata");
      source.setUser("root");
      source.setPassword("root");
      Connection conn = source.getConnection();
      PreparedStatement stmt = conn.PreparedStatement("Selet *from

      student_data where name= ?");
      stmt.setString("xiaojiang");
      ResultSet rs = stmt.executeQuery();
    <!-下面输出省略不写->

  • 相关阅读:
    Go 工作空间 深度解析
    go语言中获取变量类型的三种方法
    go语言实现分布式对象存储系统之单体对象存储
    curl命令用法
    删除Git服务器文件但是保留本地文件
    pycharm之gitignore设置
    通过pycharm使用git
    python 有关datetime时间日期 以及时间戳转换
    Please, commit your changes or stash them before you can merge
    jinkins配置python虚拟环境
  • 原文地址:https://www.cnblogs.com/c-c-c-c/p/9165646.html
Copyright © 2011-2022 走看看