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:
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