★ spring + hibernate + proxool + MySQL 连接池实现:
① proxool配置文件
proxool.xml
---
<?xml version="1.0" encoding="UTF-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>DBPool</alias>
<!--proxool只能管理由自己产生的链接-->
<driver-url>jdbc:mysql://localhost:3306/test</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="pwd"/>
</driver-properties>
<!-- proxool自动侦查各个链接状态的毫秒数,侦查到空闲的链接就马上回收,超时的销毁 -->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 当连接忙时等候的最大请求数,超过这个请求将不再接收-->
<maximum-new-connections>150</maximum-new-connections>
<!-- 最少保持的空闲连接数 -->
<prototype-count>5</prototype-count>
<!--最大连接数 -->
<maximum-connection-count>20</maximum-connection-count>
<!-- 最小连接数 -->
<minimum-connection-count>15</minimum-connection-count>
<!-- 自动重连 -->
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</something-else-entirely>
---
配置说明:
alias -->数据库连接别名(程序中需要使用的名称)
driver-url -->数据库驱动
driver-class -->驱动程序类
driver-properties -->数据库的用户和密码
minimum-connection-count -->最小连接数量,建议设置0以上,保证第一次连接时间
maximum-connection-count -->最大连接数量,如果超过最大连接数量则会抛出异常。连接数设置过多,服务器CPU和内存性能消耗很大。
simultaneous-build-throttle -->同时最大连接数
prototype-count -->一次产生连接的数量。 但不能超过最大连接数。
maximum-active-time -->连接最大活动时间 默认5分钟
maximum-connection-lifetime -->连接最大生命时间 默认4小时
自动重连?:
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
---
② Spring配置文件
applicationContext.xml
---
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 配置连接池 开始 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">
true
</prop>
<prop key="connection.provider_class">
org.hibernate.connection.ProxoolConnectionProvider
</prop>
<prop key="hibernate.proxool.xml">proxool.xml</prop>
<!--注意下面的proxoolPool这个化名必须跟proxool.xml中的名字相同( <alias>DBPool</alias>)。之前这里写错了,现在已经改好了,现在看到的是正确的了(感谢CSDN用户:yanghaizi123 发现并提醒我这个错误)-->
<prop key="hibernate.proxool.pool_alias">DBPool</prop>
</props>
</property>
<!-- 配置连接池 结束 -->
......
</bean>
---