Hibernate proxool连接池.docx

上传人:b****4 文档编号:11679348 上传时间:2023-03-30 格式:DOCX 页数:9 大小:19.18KB
下载 相关 举报
Hibernate proxool连接池.docx_第1页
第1页 / 共9页
Hibernate proxool连接池.docx_第2页
第2页 / 共9页
Hibernate proxool连接池.docx_第3页
第3页 / 共9页
Hibernate proxool连接池.docx_第4页
第4页 / 共9页
Hibernate proxool连接池.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Hibernate proxool连接池.docx

《Hibernate proxool连接池.docx》由会员分享,可在线阅读,更多相关《Hibernate proxool连接池.docx(9页珍藏版)》请在冰豆网上搜索。

Hibernate proxool连接池.docx

Hibernateproxool连接池

1.下面我介绍一下在使用Hibernate 3.0做数据执久层解决方案时,怎么配置Proxool 0.8.3数据库连接池的方法。

  

2.1、将proxool-0.8.3.jar以及连接数据库用到的jar文件包含在你的项目的classpath或者WEB-INF/lib下面,本例使用的是MS Sqlserver数据库。

  

3.2、在和hibernate.cfg.xml平级的目录新建一个proxoolconf.xml文件,添加以下文件内容:

  

4.

xml version="1.0" encoding="utf-8"?

>   

5.   

6.   

7.proxoolPool   

8.

--proxool只能管理由自己产生的连接-->   

9.jdbc:

microsoft:

sqlserver:

//192.168.0.5:

1433;DatabaseName=videopublish   

10.com.microsoft.jdbc.sqlserver.SQLServerDriver   

11.  

12.  

13.  

14.   

15.

-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->   

16.90000   

17.

-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->   

18.20   

19.

-- 最少保持的空闲连接数-->   

20.5   

21.

-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->   

22.100   

23.

-- 最小连接数-->   

24.10  

25.  

26.  

27.3、以上就是proxool所需的配置文件,下面就是hibernate.cfg.xml文件的配置了,也很简单,文件内容如下:

  

28.

xml version='1.0' encoding='UTF-8'?

>  

29.

DOCTYPE hibernate-configuration PUBLIC  

30.          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  

31.          "  

32.            

33.  

34.  

35.    proxoolPool  

36.    proxoolconf.xml  

37.    org.hibernate.connection.ProxoolConnectionProvider  

38.    com.microsoft.jdbc.sqlserver.SQLServerDriver      

39.    true  

40.      

41.      

42.      

43.      

44.  

45.  

46.4、以上就是配置hibernate+proxool作为数据库连接池的解决方案的代码,本例提供了一个简单的测试代码,如下:

  

47.<%  

48.    long r=0;  

49.    for(int i=0;i<10000;i++){     

50.            try{  

51.            long o=new Date().getTime();  

52.            Session s=HSF.currentSession();  

53.            Users u=new Users();  

54.            u.setUsername("zhanglili");  

55.            u.setUseremail("baidongli@");  

56.            u.setUsernickname("白冬立");  

57.            u.setUserpassword("1234567980123456789");  

58.            u.setUsersex("男");  

59.            u.setUsersigndate(new Date());        

60.            Transaction tt=s.beginTransaction();  

61.            s.save(u);  

62.            mit();  

63.            Users user=(Users)s.get(Users.class,new Integer

(1));  

64.            //out.println(user.getUsername());  

65.            long n=new Date().getTime();  

66.            r+=n-o;  

67.        }catch(Exception e){  

68.            out.println(e.getMessage());  

69.        }finally{  

70.            HSF.closeSession();  

71.        }     

72.    }  

73.    out.println("avg="+r/10);  

74.%>  

75.5、说明一下,我分别用proxool、tomcat JNDI、Hibernate自带的连接池进行配置之后分别执行以上的10000条数据插入和读取,结果显示proxool的性能要优于tomcat JNDI,而Hibernate自带的就更不用提了,差很远。

依次为:

39265毫秒/10000条、26013毫秒/10000条、50029毫秒/10000条。

  

76.6、在Hibernate配置连接池时还有一些解决方案,用的比较多的例如:

c3p0,apache dhcp,但网上许多评论显示c3p0在大负荷的负载情况下,性能会降低许多,apache dhcp因为Hibernate作者在测试时发现了性能Bug,所以在Hibernate3.0版本中已经去掉了对其的支持,相比之下,proxool是大家都推荐使用的,许多业界成熟的公司(例如三星)都采用proxool做为方案。

  

77.7、厚厚,最后,如果有交流struts,hibernate,spring,freemarker,velocity,以及prototype,scriptaculous等ajax框架的朋友,可以加我的msn:

baidongli888@ 2006.10.31  

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。

下面是Hibernate环境下几种常见的连接池配置:

1.Hibernate默认连接池

xmlversion='1.0'encoding='UTF-8'?

>

DOCTYPEhibernate-configuration

PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"

"

—JDBC驱动程序-->

com.mysql.jdbc.Driver

--连接数据库的URL-->

jdbc:

mysql:

//localhost:

3306/schoolproject

true

UTF-8

--连接的登录名-->

root

—登录密码-->

--是否将运行期生成的SQL输出到日志以供调试-->

true

--指定连接的语言-->

org.hibernate.dialect.MySQLDialect

--映射Student这个资源-->

2.C3P0连接配置

xmlversion='1.0'encoding='UTF-8'?

>

DOCTYPEhibernate-configuration

PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"

"

—JDBC驱动程序-->

com.mysql.jdbc.Driver

--连接数据库的URL-->

jdbc:

mysql:

//localhost:

3306/schoolproject

true

UTF-8

--连接的登录名-->

root

--登录密码-->

--C3P0连接池设定-->

org.hibernate.connection.C3P0ConnectionProvider

20

5

120

100

120

2

--是否将运行期生成的SQL输出到日志以供调试-->

true

--指定连接的语言-->

org.hibernate.dialect.MySQLDialect

--映射Student这个资源-->

3.proxool连接池

(1)先写proxool的配置文件,文件名:

proxool.xml(一般放在与hibernate.cfg.xml文件在同一个目录中)本例配置的是MYSQL数据库,数据库的名字为schoolproject

xmlversion="1.0"encoding="UTF-8"?

>

--theproxoolconfigurationcanbeembeddedwithinyourownapplication's.

Anythingoutsidethe"proxool"tagisignored.-->

--连接池的别名-->

DBPool

--proxool只能管理由自己产生的连接-->

jdbc:

mysql:

//localhost:

3306/schoolproject?

useUnicode=true&characterEncoding=UTF8

—JDBC驱动程序-->

com.mysql.jdbc.Driver

--proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回

收,超时的销毁-->

90000

--指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的

用户连接就不会被接受-->

20

--最少保持的空闲连接数-->

5

--允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的

等待请求数由maximum-new-connections决定-->

100

--最小连接数-->

10

(2)配置hibernate.cfg.xml文件

xmlversion='1.0'encoding='UTF-8'?

>

DOCTYPEhibernate-configuration

PUBLIC"-//Hibernate/HibernateConfigurationDTD//EN"

"

org.hibernate.connection.ProxoolConnectionProvider

DBPool

proxoolconf.xml

--是否将运行期生成的SQL输出到日志以供调试-->

true

--指定连接的语言-->

org.hibernate.dialect.MySQLDialect

--映射Student这个资源-->

(1)hibernate.connection.provider_class定义Hibernate的连接加载类,这里Proxool连接池是用这个,不同的连接池有不同的加载类,可以查阅Hibernate文档获取相关信息

(2)hibernate.proxool.pool_alias这里就是用我们上面提到的连接池的别名

(3)hibernate.proxool.xml是向Hibernate声明连接池的配置文件位置,可以用相对或绝对路径,用相对路径时要注意一定在要Path范围内!

不然会抛出异常。

(4)dialect是声明SQL语句的方言

(5)show_sql定义是否显示Hibernate生成的SQL语言,一般在调试阶段设为true,完成后再改成false,这样有利于调试。

(6)资源文件映射

4.JNDI连接池,数据源已经由应用服务配置好(如Web服务器),Hibernate需要做的只是通过JNDI名查找到此数据源。

应用服务器将连接池对外显示为JNDI绑定数据源,它是javax.jdbc.Datasource类的一个实例。

只要配置一个Hibernate文件,如:

hibernate.connection.datasource=java:

/comp/env/jdbc/schoolproject//JNDI名

hibernate.transaction.factory_class=org.hibe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1