[收藏]Spring 中 C3p0 connection pooling 的配置
Spring 的 DataSource bean 定義如下, 把可變的變量抽出放在db.properties file中, 方便修改 db.properties file只要放在當前項目的classes路徑下,或放在Tomcat 的Shared/classes下, Spring 就可以找到<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>${jdbc.driver}</value>
</property>
<property name="jdbcUrl">
<value>${jdbc.url}</value>
</property>
<property name="acquireIncrement"><value>${hibernate.c3p0.acquire_increment}</value></property>
<property name="idleConnectionTestPeriod"><value>${hibernate.c3p0.idle_test_period}</value></property>
<property name="checkoutTimeout"><value>${hibernate.c3p0.timeout}</value></property>
<property name="maxPoolSize"><value>${hibernate.c3p0.max_size}</value></property>
<property name="minPoolSize"><value>${hibernate.c3p0.min_size}</value></property>
<property name="maxStatements"><value>${hibernate.c3p0.max_statements}</value></property>
<property name="initialPoolSize"><value>${hibernate.c3p0.min_size}</value></property>
<property name="user"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
</bean>
db.properties 如下
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/zyw?useUnicode=true&characterEncoding=GBK
jdbc.username=root
jdbc.password=root
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.format_sql=false
hibernate.c3p0.min_size=80
hibernate.c3p0.max_size=80
hibernate.c3p0.timeout=3000
hibernate.c3p0.max_statements=6000
hibernate.c3p0.idle_test_period=3000
hibernate.c3p0.acquire_increment=5
下面是一些可供使用的項:
maxIdleTime:<!--最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
acquireIncrement:<!--當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 -->
maxStatements:<!--JDBC的標準參數,用以控制數據源內加載的PreparedStatements數量。但由于預緩存的statements
屬于單個connection而不是整個連接池。所以設置這個參數需要考慮到多方面的因素。
如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。Default: 0-->
idleConnectionTestPeriod:<!--每60秒檢查所有連接池中的空閑連接。Default: 0 -->
acquireRetryAttempts: