c 3 p 0接続池の配置


C 3 P 0はオープンソースのJDBC接続池であり、データソースとJNDIバインディングを実現し、JDBC 3仕様とJDBC 2の標準拡張をサポートしています.現在使用されているオープンソースはハイバーナー、Springなどがあります.dbcpに比べて、dbcpは自動的に空き接続を回収する機能がありません.c 3 p 0はあります.
2.一般的なc 3 p 0のコメント構成:http://www.mchange.com/projects/c3p0/index.html)
<c 3 p 0-config>                                
2.配置方法:
(1)ヒベルナのヒベルナ.cfg.xml:
<!--       -->
<property name="hibernate.c3p0.max_size">20</property>
<!--       -->
<property name="hibernate.c3p0.min_size">5</property>
<!--          ,        ,     ,     -->
<property name="hibernate.c3p0.timeout">120</property>
<!--    PreparedStatement    -->
<property name="hibernate.c3p0.max_statements">100</property>
<!--   120             ,    -->
<property name="hibernate.c3p0.idle_test_period">120</property>
<!--               ,C3P0           -->
<property name="hibernate.c3p0.acquire_increment">2</property>
<!--             -->
<property name="hibernate.c3p0.validate">true</property>
(2)spring統合hibernateの構成例:
<!-- c3p0      -->  
     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
          <!--    -->  
          <property name="user" value="${username}"/>  
          <!--     -->  
          <property name="password" value="${password}"/>  
          <property name="driverClass" value="${driver_class}"/>  
          <property name="jdbcUrl" value="${url}"/>  
  
           <!--            。   : 15 -->   
          <property name="maxPoolSize" value="20"/>  
          <!--             ,   :3-->  
          <property name="minPoolSize" value="2"/>  
          <!--            ,    minPoolSize maxPoolSize  ,   3-->  
          <property name="initialPoolSize" value="2"/>  
  
          <!--      ,60           。  0     。   : 0 -->   
          <property name="maxIdleTime">60</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>  
          <!--c3p0   PreparedStatements     。  maxStatements maxStatementsPerConnection  0,      ,       0,          。     : 0-->   
          <property name="maxStatements">100</property>  
          <!--maxStatementsPerConnection                   statements 。   : 0 -->   
          <property name="maxStatementsPerConnection"></property>  
     </bean>  
(3)proertiesファイルの配置方法:(srcディレクトリの下に置く)
c3p0.jdbcUrl=jdbc:oracle:thin:@127.0.0.1:1521:orcl  
c3p0.driverClass=oracle.jdbc.driver.OracleDriver  
c3p0.user=test  
c3p0.password=test  
  
c3p0.acquireIncrement=3   
c3p0.idleConnectionTestPeriod=60      
c3p0.initialPoolSize=10   
c3p0.maxIdleTime=60   
c3p0.maxPoolSize=20   
c3p0.maxStatements=100    
c3p0.minPoolSize=5    
(4)C 3 P 0の新規作成接続共通クラスの取得 
public class MyC3P0Utils{  
    private static DataSource ds;  
  
    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();  
    static {  
        ds = new ComboPooledDataSource();//      ,       ,            
    }  
  
    public static DataSource getDataSource() {  
        return ds;  
    }  
  
    public static Connection getConnection() {  
        try {  
//                         
            Connection conn = tl.get();  
            if (conn == null) { //              
                conn = ds.getConnection();  
                tl.set(conn);  
            }  
            return conn;  
        } catch (Exception e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    public static void startTransaction() {  
        try {  
            //                  
            Connection conn=getConnection();  
            conn.setAutoCommit(false);  
        } catch (Exception e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    public static void commitTransaction() {  
        try {  
            Connection conn = tl.get();  
            if (conn != null) {  
                conn.commit();  
            }  
        } catch (Exception e) {  
            throw new RuntimeException(e);  
        }  
    }  
  
    public static void closeConnection() {  
        try {  
            Connection conn = tl.get();  
            if (conn != null) {  
                conn.close();  
            }  
        } catch (Exception e) {  
            throw new RuntimeException(e);  
        } finally {  
            tl.remove(); //     ,            ( threadlocal              )  
        }  
    }  
}  
3.c 3 p 0のjarカバンのダウンロード住所:http://download.csdn.net/detail/ahuangtaoa/5262052