自:http://hi.baidu.com/waltertan/blog/item/05449ced9222134379f05575.html
Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP。在配置连接池时需要注意的有三点:
一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在缺陷。如果你因为某 种原因需要在Hibernate3中使用DBCP,建议采用JNDI方式。
二、默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池。但这个连接池性能不佳,且存在诸多BUG(有朋友曾在Mysql环境下被八小时连接悬空问题困扰过),因此官方也只是建议仅在开发环境下使用。
三、Hibernate2和Hibernate3的命名空间有所变化。例如,配置C3P0时的provider_class有Hibernate2环境下使用net.sf.hibernate.connection.C3P0ConnectionProvider,在Hibernate3环境下使用org.hibernate.connection.C3P0ConnectionProvider。
另外,有一些外国文章称C3PO在性能上有点缺陷,所以本文主要谈谈如何采用proxool作为Hibernate3的连接池。
OK,Let'Go!!!
一、获取proxool
从proxool的官网上下载最新版本的proxool,官网地址是http://proxool.sourceforge.net/
二、编写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/hibernate_many2one?useUnicode=true&characterEncoding=utf8
</driver-url>
<!-- JDBC驱动程序 -->
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="" />
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空闲连接数-->
<prototype-count>5</prototype-count>
<!--
允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->
<maximum-connection-count>100</maximum-connection-count>
<!-- 最小连接数-->
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely>
三、修改hibernate.cfg.xml
由于引入了连接池,而且连接池配置文件中已经定义好数据源了,所以hibernate.cfg.xml就无须再配置数据库url、driver、username和password了,不过我们却要配上连接池(不然的话Hibernate怎么识别proxool呀)。以下是修改后的hibernate.cfg.xml:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置proxool连接池 -->
<property name="hibernate.connection.provider_class">
org.hibernate.connection.ProxoolConnectionProvider
</property>
<property name="hibernate.proxool.pool_alias">DBPool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 在控制台能显示hibernate执行的sql语句 -->
<property name="hibernate.show_sql">true</property>
<mapping resource="my/User.hbm.xml" />
<mapping resource="my/Group.hbm.xml" />
</session-factory>
</hibernate-configuration>
这样,我们就给Hibernate加上proxool连接池了!
最后还是补充3点值得注意的地方:
1、proxool配置文件的名字要跟hibernate.cfg.xml文件中的<property name="hibernate.proxool.xml"></property>标签对的值对应;
2、proxool配置文件中的<alias></alias>标签对的值也要跟hibernate.cfg.xml中标签对<property name="hibernate.proxool.pool_alias"></property>的值一致;
3、一定要注意,大家可能和我一样,喜欢在配置文件中添加注释说明,但是在proxool配置文件中千万不要添加任何注释,不然的话编译器就很可能会抛异常!!!
分享到:
相关推荐
在Hibernate中配置Proxool连接池
Hibernate Proxool连接池配置总结及常遇问题
连接池配置文件 博文链接:https://yanghaiskys.iteye.com/blog/215424
proxool-0.9.1(my).jar 包是我修改了proxool-0.9.1后的jar包,修改后可以完全支持spring配置,并添加了charSet配置属性,用于配置数据库链接的设置默认字符集,并且解决了proxool数据库连接池报如下错误的问题:...
NULL 博文链接:https://devsky.iteye.com/blog/1038804
proxool 数据库连接池用户名、密码加密处理,文件里面包含可直接使用加密的jar以及相关使用说明。
hibernate与proxool连接池整合demo
本项目采用当前主流的MVC和IOC框架spring 3、优秀的ORM框架hibernate和超级厉害的proxool数据库连接池。这个工程demo,是本人在企业应用中的项目缩影,绝对实用于企业的应用。 适合朋友: 1.一直用单独的servlet和...
NULL 博文链接:https://12345678.iteye.com/blog/718296
本项目采用Struts2、Hibernate3集成JPA2、Spring3和Proxool连接池的集成,对整体SSH框架的数据访问及网站效率都有较大的提升,本项目即时部署即可使用,既满足新手的学习,也对有深层研究的朋友有帮助。
structs2+sping3+hibernate3+proxool连接池完整实例,可直接导入myeclipse工程进行运行
由于项目需求的需要,我们引入了连接池。...我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们的项目中采用了Proxool
第一步:hibernate.cfg.xml 加入: <property name="...--proxool只能管理由自己产生的连接--> <driver-url> jdbc:microsoft:sqlserver://243.155.187.236:1433;DatabaseName=study </driver-url> <driver-
Hibernate的三种连接池设置C3P0、Proxool和DBCP. 详细说明及配置方法 Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.
框架整合Spring MVC3.23+Spring3.23+Hibernate4.2.3+Activiti5.16.3,三层架构dao,service,controller,使用proxool连接池(已配置好监听器),默认链接mysql数据库。可根据项目开发需要,做适当修改,各项配置齐全...