日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Hibernate連接池配置實(shí)例

Hibernate支持第三方的連接池,官方推薦的連接池是C3P0,Proxool,以及DBCP。在Hibernate連接池配置時(shí)需要注意的有三點(diǎn):

成都創(chuàng)新互聯(lián)電話聯(lián)系:028-86922220,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)網(wǎng)頁制作領(lǐng)域十余年,包括陽臺(tái)護(hù)欄等多個(gè)行業(yè)擁有豐富的網(wǎng)站維護(hù)經(jīng)驗(yàn),選擇成都創(chuàng)新互聯(lián),為企業(yè)保駕護(hù)航!

一、Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已經(jīng)不再推薦使用,官方的解釋是這個(gè)連接池存在缺陷。如果你因?yàn)槟撤N原因需要在Hibernate3中使用DBCP,建議采用JNDI方式。

二、默認(rèn)情況下(即沒有配置連接池的情況下),Hibernate會(huì)采用內(nèi)建的連接池。但這個(gè)連接池性能不佳,且存在諸多BUG(筆者就曾在Mysql環(huán)境下被八小時(shí)連接懸空問題困擾過),因此官方也只是建議僅在開發(fā)環(huán)境下使用。

三、Hibernate2和Hibernate3的命名空間有所變化。例如,配置C3P0時(shí)的provider_class有Hibernate2環(huán)境下使用net.sf.hibernate.connection.C3P0ConnectionProvider,在Hibernate3環(huán)境下使用org.hibernate.connection.C3P0ConnectionProvider。

下面是Hibernate環(huán)境下幾種常見的連接池配置:

1.默認(rèn)Hibernate連接池配置

 
 
 
  1.   
  2. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"   
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5.   
  6.   
  7. com.mysql.jdbc.Driver  
  8.   
  9.     
  10. jdbc:mysql://localhost:3306/schoolproject   
  11.   
  12. true  
  13. UTF-8  
  14.   
  15. root  
  16.   
  17.   
  18.   
  19. true  
  20.   
  21. org.hibernate.dialect.MySQLDialect  
  22.   
  23.   
  24.     
  25.   

 2.C3P0的Hibernate連接池配置

 
 
 
  1.   
  2. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"   
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5.   
  6.   
  7. com.mysql.jdbc.Driver  
  8.   
  9.     
  10. jdbc:mysql://localhost:3306/schoolproject   
  11.   
  12. true  
  13. UTF-8  
  14.   
  15. root  
  16.   
  17.   
  18.     
  19.   
  20. org.hibernate.connection.C3P0ConnectionProvider   
  21.   
  22. 20  
  23. 5  
  24. 120  
  25. 100  
  26. 120  
  27. 2  
  28.   
  29. true  
  30.   
  31. org.hibernate.dialect.MySQLDialect  
  32.   
  33.   
  34.     
  35.   
 
 
 
  1.     
  2.     
  3.   
  4.   
  5.   
  6. DBPool  
  7.   
  8.   
  9. jdbc:mysql://localhost:3306/schoolproject?useUnicode=true&characterEncoding=UTF8  
  10.   
  11.   
  12. com.mysql.jdbc.Driver  
  13.   
  14.   
  15.   
  16.     
  17.     
  18. 90000  
  19.     
  20. 20  
  21.     
  22. 5  
  23.     
  24. 100  
  25.   
  26. 10  
  27.     
  28.    

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

 
 
 
  1.   
  2. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"   
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4.   
  5.   
  6.   
  7. org.hibernate.connection.ProxoolConnectionProvider   
  8.   
  9. DBPool  
  10. proxoolconf.xml  
  11.   
  12. true  
  13.   
  14. org.hibernate.dialect.MySQLDialect  
  15.   
  16.   
  17.     
  18.   

(1) hibernate.connection.provider_class定義Hibernate的連接加載類,這里Proxool連接池是用這個(gè),不同 的連接池有不同的加載類,可以查閱Hibernate文檔獲取相關(guān)信息

(2) hibernate.proxool.pool_alias這里就是用我們上面提到的連接池的別名

(3) hibernate.proxool.xml是向Hibernate聲明連接池的配置文件位置,可以用相對(duì)或絕對(duì)路徑,用相對(duì)路徑時(shí)要注意一定在要Path范圍內(nèi)!不然會(huì)拋出異常。

(4) dialect是聲明SQL語句的方言

(5) show_sql定義是否顯示Hibernate生成的SQL語言,一般在調(diào)試階段設(shè)為true,完成后再改成false,這樣有利于調(diào)試

(6) 資源文件映射

3.   JNDI方式的Hibernate連接池配置

數(shù)據(jù)源已經(jīng)由應(yīng)用服務(wù)配置好(如Web服務(wù)器),Hibernate需要做的只是通過JNDI名查找到此數(shù)據(jù)源。應(yīng)用服務(wù)器將連接池對(duì)外顯示為JNDI綁定數(shù)據(jù)源,它是javax.jdbc.Datasource類的一個(gè)實(shí)例。只要配置一個(gè)Hibernate文件,如:hibernate.properties

 
 
 
  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  

結(jié)論:

由于在Hibernate3.0中,已經(jīng)不再支持dbcp了,Hibernate的作者在hibernate.org中,明確指出在實(shí)踐中發(fā)現(xiàn)dbcp有 BUG,在某些種情會(huì)產(chǎn)生很多空連接不能釋放,所以拋棄了對(duì)dbcp的支持。我不知是否在dbcp最新版本中解決了這個(gè)問題,我以前在一個(gè)訪問量不大的項(xiàng)目中用過dbcp,運(yùn)行了一年多都沒出現(xiàn)問題。不過在網(wǎng)上的確也有不少網(wǎng)友指出dbcp在大型的應(yīng)用中會(huì)出現(xiàn)不穩(wěn)定的情況。所以在真相未經(jīng)證實(shí)的情況下,我覺得對(duì)dbcp持慎重的態(tài)度。

至于c3p0,有評(píng)論說它的算法不是最優(yōu)的,而且,我在matrix中,見到有網(wǎng)友做了一個(gè)實(shí)驗(yàn),在同一項(xiàng)目中分別用了幾個(gè)常用的Hibernate連接池配置,然后測試其性能,發(fā)現(xiàn)c3p0占用資源比較大,效率也不高。

所以,基于上述原因,我才花兩晚的時(shí)間去研究proxool的配置,proxool不少行家推薦使用,而且暫時(shí)來說,是負(fù)面評(píng)價(jià)是最少的一個(gè)。在三星中也有項(xiàng)目是用proxool的。


名稱欄目:Hibernate連接池配置實(shí)例
文章分享:http://www.5511xx.com/article/cohgsgh.html