c3p0在hibernate连接配置                                    


c3p0 配置

hibernate

连接池

hibernate.connection.provider_class=net.sf.hibernate.connection.C3P0ConnectionProvider

c3p0.minPoolSize=3

c3p0.maxPoolSize=15

c3p0.timeout=5000获取连接的等待时间


c3p0.maxIdleTime=1800连接的过期时间

 c3p0.max_statements=100


c3p0.idle_test_period=3000每隔3000s测试连接是否可以正常使用


c3p0.acquire_increment=2

 c3p0.validate=true</property>每次连接验证连接是否可用

使用c3p0连接池设置,你将就有数据库异常状态恢复功能,但哪并不以为着你将再也不用看到一个异常了。一个数据库会话中的失效的连接将

被中断,如:假如要取出一个已经被取出的连接,或者假如他们在从池中取出时连接测试不正常,那么这个连接将被中断,并且你将在抛出的

异常中看到被中断的连接。


使用c3p0 使获得一个无效的连接的可能性非常小。避免获得无效连接最有效的方法是设置hibernate.c3p0.validate属性为true(在hibernate

应用中所以那些使用c3p0的应用将使用c3p0-native属性c3p0.testConnectionOnCheckout)。假如你设置hibernate.c3p0.validate属性为true

,c3p0在获得连接时优先测试连接,在数据库重启后你的应用决不会获得一个无效的连接,除非在数据库关闭时你已经获得有连接。

有一个减少可靠性,提示性能的方法,但啦有能付出巨大代价,方法是设置c3p0.testConnectionsOnCheckin和hibernate.c3p0.idle_test_per

iod(c3p0-native

c3p0.idleConnectionTestPeriod)为一个较小的值,在这种方案中所有连接测试是异步的,你必须保证那些在你设置的idle_test_period的时

间段类没有能够被测试的连接不能被取出。因此,假如在一个非常短的时间内连接被取出,那么你从连接池中获得的连接不一定是有效的。

还有一个方案,我推荐设置 c3p0属性文件中的缺省连接测试为"c3p0.preferredTestQuery" 或 "c3p0.automaticTestTable",但它通常比较慢