Spring 3 Hibernate 3.0 annotation proxool连接池配置

来源:互联网 发布:带网络的电视机 编辑:程序博客网 时间:2024/06/10 18:56

由于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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://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>


原创粉丝点击