2009年2月11日星期三

Fat Client中使用Hibernate C3P0

BTAF项目使用hibernate。作为胖客户端使用hibernate应该注意对连接池的配置。因为你不能控制客户端的在线时间,所以基本的原则是:尽少占用数据库连接、尽快释放连接。
所以
1)连接池最少连接数应该为零或者1;
2)最多缓存的连接数应该根据具体应用不同而不同;
3)从连接池中的撤销的周期应该短;
4) 检查过期连接的频率也应该频繁些。
下面是个示例:
<property name="c3p0.min_size">0</property>
<property name="c3p0.max_size">5</property>
<property name="c3p0.timeout">180</property>
<property name="c3p0.idleTestPeriod">60</property>
从hibernate的一些输出:
BasicResourcePool:1935 - Checking for expired resources - Thu Feb 12 11:04:32 CST 2009 [com.mchange.v2.resourcepool.BasicResourcePool@9ddde9]
BasicResourcePool:1447 - BEGIN check for expired resources. [com.mchange.v2.resourcepool.BasicResourcePool@9ddde9]
BasicResourcePool:1468 - FINISHED check for expired resources. [com.mchange.v2.resourcepool.BasicResourcePool@9ddde9]


关于如何在hibernate中配置C3P0:http://www.hibernate.org/214.html
关于c3p0更详细的介绍:http://www.mchange.com/projects/c3p0/index.html#configuration_properties

注意, hibernate文档中介绍说有些参数Must be set in hibernate.cfg.xml(or hibernate.properties),而有些Must be set in c3p0.properties。为什这样?因为必须在hibernate中设置的参数肯定经过了hibernate的封装,也许是因为这些参数太基本(重要)了。