Hibernate2和Hibernate3连接池配置

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默认连接池

Xml代码:

 
 
 
  1.  version='1.0' encoding='UTF-8'?>     
  2. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"      
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">        
  4.         
  5.  >        
  6. >        
  7.  name="connection.driver_class">com.mysql.jdbc.Driver        
  8.         
  9.  name="connection.url">          
  10. jdbc:mysql://localhost:3306/schoolproject         
  11.         
  12.  name="connection.useUnicode">true        
  13.  name="connection.characterEncoding">UTF-8        
  14.         
  15.  name="connection.username">root        
  16. >        
  17.  name="connection.password">        
  18.         
  19.  name="show_sql">true        
  20.         
  21.  name="dialect">org.hibernate.dialect.MySQLDialect        
  22.         
  23.  resource="com/wqbi/model/pojo/student.hbm.xml" />        
  24.           
  25.      
  26.  version='1.0' encoding='UTF-8'?> 
  27. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"  
  28. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
  29.  
  30.  > 
  31. > 
  32.  name="connection.driver_class">com.mysql.jdbc.Driver 
  33.  
  34.  name="connection.url">   
  35. jdbc:mysql://localhost:3306/schoolproject  
  36.  
  37.  name="connection.useUnicode">true 
  38.  name="connection.characterEncoding">UTF-8 
  39.  
  40.  name="connection.username">root 
  41. > 
  42.  name="connection.password"> 
  43.  
  44.  name="show_sql">true 
  45.  
  46.  name="dialect">org.hibernate.dialect.MySQLDialect 
  47.  
  48.  resource="com/wqbi/model/pojo/student.hbm.xml" /> 
  49.    
  50.  

2.C3P0连接配置

Xml代码:

 
 
 
  1.  version='1.0' encoding='UTF-8'?>        
  2. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"         
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">        
  4.         
  5.  >        
  6. >        
  7.  name="connection.driver_class">com.mysql.jdbc.Driver        
  8.         
  9.  name="connection.url">          
  10. jdbc:mysql://localhost:3306/schoolproject         
  11.         
  12.  name="connection.useUnicode">true        
  13.  name="connection.characterEncoding">UTF-8        
  14.         
  15.  name="connection.username">root        
  16.         
  17.  name="connection.password">        
  18.         
  19.  name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider     
  20.         
  21.  name="hibernate.c3p0.max_size">20        
  22.  name="hibernate.c3p0.min_size">5        
  23.  name="hibernate.c3p0.timeout">120        
  24.  name="hibernate.c3p0.max_statements">100        
  25.  name="hibernate.c3p0.idle_test_period">120        
  26.  name="hibernate.c3p0.acquire_increment">2        
  27.        
  28.  name="show_sql">true        
  29.         
  30.  name="dialect">org.hibernate.dialect.MySQLDialect        
  31.         
  32.  resource="com/wqbi/model/pojo/student.hbm.xml" />        
  33.           
  34.      
  35.  version='1.0' encoding='UTF-8'?> 
  36. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"  
  37. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
  38.  
  39.  > 
  40. > 
  41.  name="connection.driver_class">com.mysql.jdbc.Driver 
  42.  
  43.  name="connection.url">   
  44. jdbc:mysql://localhost:3306/schoolproject  
  45.  
  46.  name="connection.useUnicode">true 
  47.  name="connection.characterEncoding">UTF-8 
  48.  
  49.  name="connection.username">root 
  50.  
  51.  name="connection.password"> 
  52.  
  53.  name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider  
  54.  
  55.  name="hibernate.c3p0.max_size">20 
  56.  name="hibernate.c3p0.min_size">5 
  57.  name="hibernate.c3p0.timeout">120 
  58.  name="hibernate.c3p0.max_statements">100 
  59.  name="hibernate.c3p0.idle_test_period">120 
  60.  name="hibernate.c3p0.acquire_increment">2 
  61.  
  62.  name="show_sql">true 
  63.  
  64.  name="dialect">org.hibernate.dialect.MySQLDialect 
  65.  
  66.  resource="com/wqbi/model/pojo/student.hbm.xml" /> 
  67.    
  68.  

3.proxool连接池

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

Xml代码:

 
 
 
  1.  version="1.0" encoding="UTF-8"?>          
  2.         
  3. DBPool        
  4.         
  5.         
  6. jdbc:mysql://localhost:3306/schoolproject?useUnicode=true&characterEncoding=UTF8        
  7.         
  8. >        
  9. com.mysql.jdbc.Driver        
  10.         
  11.  name="user" value="root"/>        
  12.  name="password" value=""/>        
  13.          
  14.           
  15. 5        
  16.         
  17. 10        
  18.           
  19.      
  20.  version="1.0" encoding="UTF-8"?>   
  21.  
  22. DBPool 
  23.  
  24.  
  25. jdbc:mysql://localhost:3306/schoolproject?useUnicode=true&characterEncoding=UTF8 
  26.  
  27. > 
  28. com.mysql.jdbc.Driver 
  29.  
  30.  name="user" value="root"/> 
  31.  name="password" value=""/> 
  32.    
  33.    
  34. 5 
  35.  
  36. 10 
  37.    
  38.  

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

Xml代码:

 
 
 
  1.  version='1.0' encoding='UTF-8'?>        
  2. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"         
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">        
  4.         
  5.  >        
  6.  name="hibernate.connection.provider_class">        
  7. org.hibernate.connection.ProxoolConnectionProvider         
  8.         
  9.  name="hibernate.proxool.pool_alias">DBPool        
  10.  name="hibernate.proxool.xml">proxoolconf.xml        
  11.        
  12.  name="show_sql">true        
  13.         
  14.  name="dialect">org.hibernate.dialect.MySQLDialect       
  15.         
  16.  resource="com/wqbi/model/pojo/student.hbm.xml" />       
  17.           
  18.      
  19.  version='1.0' encoding='UTF-8'?> 
  20. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"  
  21. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
  22.  
  23.  > 
  24.  name="hibernate.connection.provider_class"> 
  25. org.hibernate.connection.ProxoolConnectionProvider  
  26.  
  27.  name="hibernate.proxool.pool_alias">DBPool 
  28.  name="hibernate.proxool.xml">proxoolconf.xml 
  29.  
  30.  name="show_sql">true 
  31.  
  32.  name="dialect">org.hibernate.dialect.MySQLDialect 
  33.  
  34.  resource="com/wqbi/model/pojo/student.hbm.xml" /> 
  35.    
  36.  

(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文件,如:

 
 
 
  1. hibernate.connection.datasource=java:/comp/env/jdbc/schoolproject //JNDI名   
  2. hibernate.transaction.factory_class = org.hibernate.transaction.JTATransactionFactory   
  3. hibernate.transaction.manager_loopup_class =   
  4. org.hibernate.transaction.JBossTransactionManagerLookup   
  5. hibernate.dialect=org.hibernate.dialect.MySQLDialect  

网站标题:Hibernate2和Hibernate3连接池配置
文章路径:http://www.csdahua.cn/qtweb/news34/109334.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网