c3p0参数解释
properties: 类路径下提供一个c3p0.properties文件,文件的命名必须是c3p0.properties
driverclass:加载驱动(oracle.jdbc.driver.OracleDriver)
jdbcUrl:统一资源定位符(jdbc:oracle:thin:@127.0.0.1:1521:orcl)
user:数据库的用户名
password:登录数据库的密码
checkoutTimeout:配置当连接池所有连接用完时应用程序
getConnection的等待时间。为0则无限等待直至有其他连接释放或者创建新的连接,不为0则当时间到的时候如果仍没有获得连接,则会抛出SQLException。(其实就是acquireRetryAttempts*acquireRetryDelay。)
acquireIncrement: 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数
acquireRetryAttempts:连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功。default : 30(建议使用)
acquireRetryDelay:连接池在获得新连接时的间隔时间。default : 1000 单位ms(建议使用)
breakAfterAcquireFailure:如果为true,则当连接获取失败时自动关闭数据源,除非重新启动应用程序。所以一般不用。
autoCommitOnClose:连接池在回收数据库连接时是否自动提交事务。如果为false,则会回滚未提交的事务,如果为true,则会自动提交事务。default : false(不建议使用)
connectionTesterClassName:连接池用来支持automaticTestTable和preferredTestQuery测试的类,必须是全类名,就像默认的那样,可以通过实现UnifiedConnectionTester接口或者继承AbstractConnectionTester来定制自己的测试方法
automaticTestTable:配置一个表名,连接池根据这个表名用自己的测试sql语句在这个空表上测试数据库连接,这个表只能由c3p0来使用,用户不能操作。default : null(不建议使用)
idleConnectionTestPeriod:每60秒检查所有连接池中的空闲连接。Default: 0
initialPoolSize:初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间.Default: 3
maxIdleTime:最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0
maxPoolSize:连接池中保留的最大连接数。Default: 15
minPoolSize:连接池中保留的最小连接数
maxStatements :JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements,属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
maxStatementsPerConnection:定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0
overrideDefaultUser:当用户调用getConnection()时使root用户成为去获取连接的用户。主要用于连接池连接非c3p0的数据源时。Default: null
overrideDefaultPassword:与overrideDefaultUser参数对应使用的一个参数。Default: null
propertyCycle:用户修改系统配置参数执行前最多等待300秒。Default: 300
breakAfterAcquireFailure :true表示pool向数据库请求连接失败后标记整个pool为block并close,就算后端数据库恢复正常也不进行重连,客户端对pool的请求都拒绝掉。false表示不会标记 pool为block,新的请求都会尝试去数据库请求connection。默认为false。因此,如果想让数据库和网络故障恢复之后,pool能继续请求正常资源必须把此项配置设为false
testConnectionOnCheckout :true表示在每次从pool内checkout连接的时候测试其有效性,这是个同步操作,因此应用端的每次数据库调用,都会先通过测试sql测试其有效性,如果连接无效,会关闭此连接并剔除出pool,并尝试从pool内取其他连接,默认为false,此特性要慎用,会造成至少多一倍的数据库调用。
testConnectionOnCheckin :true表示每次把连接checkin到pool里的时候测试其有效性,因为是个事后操作,所以是异步的,应用端不需要等待测试结果,但同样会造成至少多一倍的数据库调用。
例:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
lazy-init="false" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"></property>
<property name="user" value="scott"></property>
<property name="password" value="root"></property>
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数 -->
<property name="acquireIncrement" value="5"></property>
<!-- 初始化获取的连接数,取值应在minPoolSize与maxPoolSize之间 -->
<property name="initialPoolSize" value="5"></property>
<!-- 连接池中保留的最小连接数 -->
<property name="minPoolSize" value="5"></property>
<!-- 连接池中保留的最大连接数 -->
<property name="maxPoolSize" value="20"></property>
<!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。
但由于预缓存的statements属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
<property name="maxStatements" value="100"></property>
<!-- 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。
但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。
如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。 -->
<property name="numHelperThreads" value="10"></property>
<!-- 连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。
如果为0,则永远不会断开连接,即回收此连接。default : 0 单位 s -->
<property name="maxIdleTime" value="60"></property>
</bean>
参考:http://blog.csdn.net/jdfkldjlkjdl/article/details/40655421
http://blog.csdn.net/u012129031/article/details/72621288