Spring 3 Hibernate 3.0 annotation proxool连接池配置

23 篇文章 0 订阅
16 篇文章 0 订阅

由于Hibernate自带的链接池效率低效,并且有很多bug.所以官方并不推荐使用,推荐使用诸如proxool的连接池来代替Hibernate。

该配置方法是由Spring来接管proxool连接池,不用额外增加Hibernate配置文件,以及数据库与持久对象的映射文件(使用注解的方式)。

PS: 不要忘记将Hibernate库的 lib/optional/proxool文件夹中的proxool*.jar 加入到classpath中,否则无法找到proxool Connection Provider class.

Spring的配置文件( applicationContext.xml )如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="com.baidu"/>
<bean id="sessionFactory class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<description>Annotation Hibernate from proxool </description>
<property name="packageToScan">
<value>com.baidu.model</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.proxool.xml">proxool.xml</prop>    <!-- 在与该文件相同目录下建立proxool.xml 文件 -->
<prop key="hibernate.proxool.pool_alias>dbpool</prop>   <!-- 必须保证该处的别名与proxool.xml文件中声明的相同 -->
<prop key="hibernate.cglib.use_reflection_optimizer>true</prop>
<prop key="hibernate.connection.release_mode">auto</prop>  <!-- 必须保证该选项为true,保证连接池的效率 -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop>
</props>
</property>
</bean>
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory">
</bean>
<tx:annotation-driven transaction-manager="txManager"/>
</beans>

与该文件对应的proxool文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
  <proxool>
    <alias>dbpool</alias>     <!-- 与上文的database alias定义的相同 -->
    <driver-url>jdbc:mysql://localhost:3306/springdemo</driver-url>   <!-- 根据自己使用的数据库的类别来修改 -->
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <driver-properties>
      <property name="user" value="root"/>
      <property name="password" value="root"/>
    </driver-properties>
    <house-keeping-sleep-time>30</house-keeping-sleep-time>
    <maximum-connection-count>1000</maximum-connection-count>
    <minimum-connection-count>10</minimum-connection-count>
    <simultaneous-build-throttle>100</simultaneous-build-throttle>
  </proxool>
</something-else-entirely>

该文件的设置比较简单,一般都能够通过英文理解字面上的意思。

最后有兴趣的可以在Web.xml文件中添加监控链接,加入监控页面观察加入连接池之后,所带来的连接数据库上的时间和资源消耗对比。这里的教程网上有很多。不过最简单的方法是通过下载一个GUI来观测。不用额外的代码和配置。MySQL,可以使用MySQL Administer

以上内容转自:http://www.cnblogs.com/papertigerv5/archive/2011/11/04/2235919.html


总结:

1.添加proxool-0.9.1.jar到lib下面

2.新建proxool.xml

3.修改spring的applicationContext.xml添加下面的代码:

<prop key="hibernate.proxool.xml">proxool.xml</prop>    <!-- 在与该文件相同目录下建立proxool.xml 文件 -->
				<prop key="hibernate.proxool.pool_alias">DBPool</prop>   <!-- 必须保证该处的别名与proxool.xml文件中声明的相同 -->
				<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
				<prop key="hibernate.connection.release_mode">auto</prop>  <!-- 必须保证该选项为true,保证连接池的效率 -->
				<prop key="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop>

<!-- 配置hibernate属性 -->
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.proxool.xml">proxool.xml</prop>    <!-- 在与该文件相同目录下建立proxool.xml 文件 -->
				<prop key="hibernate.proxool.pool_alias">DBPool</prop>   <!-- 必须保证该处的别名与proxool.xml文件中声明的相同 -->
				<prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
				<prop key="hibernate.connection.release_mode">auto</prop>  <!-- 必须保证该选项为true,保证连接池的效率 -->
				<prop key="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</prop>
				<!-- 是否在后台显示sql,开发中显示,上线后关闭 -->
				<prop key="hibernate.show_sql">true</prop>
				<!-- 是否生成hibernate统计 -->
				<prop key="hibernate.generate_statistics">false</prop>
				<prop key="hibernate.connection.SetBigStringTryClob">true</prop> 
				<!-- <prop key="hibernate.jdbc.batch_size">0</prop>   -->
			</props>
		</property>


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值