<!--acquireIncrement:鏈接用完了自動增量3個。 -->
<property name="acquireIncrement">3</property>
<!--acquireRetryAttempts:鏈接失敗後重新試30次。-->
<property name="acquireRetryAttempts">30</property>
<!--acquireRetryDelay;兩次連接中間隔1000毫秒。 -->
<property name="acquireRetryDelay">1000</property>
<!--autoCommitOnClose:連接關閉時默認將所有未提交的操作回滾。 -->
<property name="autoCommitOnClose">false</property>
<!--automaticTestTable:c3p0測試表,沒什麼用。-->
<property name="automaticTestTable">Test</property>
<!--breakAfterAcquireFailure:出錯時不把正在提交的數據拋棄。-->
<property name="breakAfterAcquireFailure">false</property>
<!--checkoutTimeout:100毫秒後如果sql數據沒有執行完將會報錯,如果設置成0,那麼將會無限的等待。 -->
<property name="checkoutTimeout">100</property>
<!--connectionTesterClassName:通過實現ConnectionTester或QueryConnectionTester的類來測試連接。類名需制定全路徑。Default: com.mchange.v2.c3p0.impl.DefaultConnectionTester-->
<property name="connectionTesterClassName"></property>
<!--factoryClassLocation:指定c3p0 libraries的路徑,如果(通常都是這樣)在本地即可獲得那麼無需設置,默認null即可。-->
<property name="factoryClassLocation">null</property>
<!--forceIgnoreUnresolvedTransactions:作者強烈建議不使用的一個屬性。-->
<property name="forceIgnoreUnresolvedTransactions">false</property>
<!--idleConnectionTestPeriod:每60秒檢查所有連接池中的空閒連接。-->
<property name="idleConnectionTestPeriod">60</property>
<!--initialPoolSize:初始化時獲取三個連接,取值應在minPoolSize與maxPoolSize之間。 -->
<property name="initialPoolSize">3</property>
<!--maxIdleTime:最大空閒時間,60秒內未使用則連接被丟棄。若爲0則永不丟棄。-->
<property name="maxIdleTime">60</property>
<!--maxPoolSize:連接池中保留的最大連接數。 -->
<property name="maxPoolSize">15</property>
<!--maxStatements:最大鏈接數。-->
<property name="maxStatements">100</property>
<!--maxStatementsPerConnection:定義了連接池內單個連接所擁有的最大緩存statements數。Default: 0 -->
<property name="maxStatementsPerConnection"></property>
<!--numHelperThreads:異步操作,提升性能通過多線程實現多個操作同時被執行。Default: 3-->
<property name="numHelperThreads">3</property>
<!--overrideDefaultUser:當用戶調用getConnection()時使root用戶成爲去獲取連接的用戶。主要用於連接池連接非c3p0的數據源時。Default: null-->
<property name="overrideDefaultUser">root</property>
<!--overrideDefaultPassword:與overrideDefaultUser參數對應使用的一個參數。Default: null-->
<property name="overrideDefaultPassword">password</property>
<!--password:密碼。Default: null-->
<property name="password"></property>
<!--preferredTestQuery:定義所有連接測試都執行的測試語句。在使用連接測試的情況下這個一顯著提高測試速度。注意: 測試的表必須在初始數據源的時候就存在。Default: null-->
<property name="preferredTestQuery">select id from test where id=1</property>
<!--propertyCycle:用戶修改系統配置參數執行前最多等待300秒。Default: 300 -->
<property name="propertyCycle">300</property>
<!--testConnectionOnCheckout:因性能消耗大請只在需要的時候使用它。Default: false -->
<property name="testConnectionOnCheckout">false</property>
<!--testConnectionOnCheckin:如果設爲true那麼在取得連接的同時將校驗連接的有效性。Default: false -->
<property name="testConnectionOnCheckin">true</property>
<!--user:用戶名。Default: null-->
<property name="user">root</property>
<!--usesTraditionalReflectiveProxies:動態反射代理。Default: false-->
<property name="usesTraditionalReflectiveProxies">false</property>
在bean.xml下的配置如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///hib_demo"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<property name="initialPoolSize" value="3"></property>
<property name="maxPoolSize" value="10"></property>
<property name="maxStatements" value="100"></property>
<property name="acquireIncrement" value="2"></property>
</bean>
在Java SE中的配置如下:
ComboPooledDataSource datasource = new ComboPooledDataSource();
try {
String[] strArr = str.split(",");
datasource.setUser(strArr[2]);// 設置數據庫用戶名
datasource.setPassword(strArr[3]);// 設置數據庫密碼
datasource.setJdbcUrl("jdbc:oracle:thin:@//" + strArr[0] + ":1521/" + strArr[1]);// 設置數據連接地址
datasource.setDriverClass("oracle.jdbc.OracleDriver");// 設置數據庫驅動
datasource.setInitialPoolSize(50);// 連接池初始大小
datasource.setMinPoolSize(10);// 連接池最小數目
datasource.setMaxPoolSize(200);// 連接池最大數目
datasource.setMaxIdleTime(600);// 連接對象最長空閒時間
datasource.setMaxStatements(500);// 連接對象最大實例數
} catch (Exception e) {
e.printStackTrace();
}