成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hibernate連接池配置實例

開發 后端
本文向您介紹Hibernate的連接池配置,通過代碼實例展示三種不同的Hibernate連接池技術。

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

一、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連接池配置

  1. <?xml version='1.0' encoding='UTF-8'?>    
  2. <!DOCTYPE hibernate-configuration     
  3. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"     
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    
  5. <hibernate-configuration>    
  6. <session-factory >    
  7. <!—JDBC驅動程序-->    
  8. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>    
  9. <!-- 連接數據庫的URL-->    
  10. <property name="connection.url">      
  11. jdbc:mysql://localhost:3306/schoolproject     
  12. </property>    
  13. <property name="connection.useUnicode">true</property>    
  14. <property name="connection.characterEncoding">UTF-8</property>    
  15. <!--連接的登錄名-->    
  16. <property name="connection.username">root</property>    
  17. <!—登錄密碼-->    
  18. <property name="connection.password"></property>    
  19. <!--是否將運行期生成的SQL輸出到日志以供調試-->    
  20. <property name="show_sql">true</property>    
  21. <!--指定連接的語言-->    
  22. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>    
  23. <!--映射Student這個資源-->    
  24. <mapping resource="com/wqbi/model/pojo/student.hbm.xml" />    
  25. </session-factory>      
  26. </hibernate-configuration>    

 2.C3P0的Hibernate連接池配置

  1. <?xml version='1.0' encoding='UTF-8'?>    
  2. <!DOCTYPE hibernate-configuration     
  3. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"     
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    
  5. <hibernate-configuration>    
  6. <session-factory >    
  7. <!—JDBC驅動程序-->    
  8. <property name="connection.driver_class">com.mysql.jdbc.Driver</property>    
  9. <!-- 連接數據庫的URL-->    
  10. <property name="connection.url">      
  11. jdbc:mysql://localhost:3306/schoolproject     
  12. </property>    
  13. <property name="connection.useUnicode">true</property>    
  14. <property name="connection.characterEncoding">UTF-8</property>    
  15. <!--連接的登錄名-->    
  16. <property name="connection.username">root</property>    
  17. <!--登錄密碼-->    
  18. <property name="connection.password"></property>    
  19.       
  20. <!-- C3P0連接池設定-->    
  21. <p    
  22. <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider     
  23. </property>    
  24. <property name="hibernate.c3p0.max_size">20</property>    
  25. <property name="hibernate.c3p0.min_size">5</property>    
  26. <property name="hibernate.c3p0.timeout">120</property>    
  27. <property name="hibernate.c3p0.max_statements">100</property>    
  28. <property name="hibernate.c3p0.idle_test_period">120</property>    
  29. <property name="hibernate.c3p0.acquire_increment">2</property>    
  30. <!--是否將運行期生成的SQL輸出到日志以供調試-->    
  31. <property name="show_sql">true</property>    
  32. <!--指定連接的語言-->    
  33. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>    
  34. <!--映射Student這個資源-->    
  35. <mapping resource="com/wqbi/model/pojo/student.hbm.xml" />    
  36. </session-factory>      
  37. </hibernate-configuration>    
  1. <?xml version="1.0" encoding="UTF-8"?>      
  2. <!-- the proxool configuration can be embedded within your own application's.      
  3. Anything outside the "proxool" tag is ignored. -->      
  4. <something-else-entirely>    
  5. <proxool>    
  6. <!--連接池的別名-->    
  7. <alias>DBPool</alias>    
  8. <!--proxool只能管理由自己產生的連接-->    
  9. <driver-url>    
  10. jdbc:mysql://localhost:3306/schoolproject?useUnicode=true&characterEncoding=UTF8    
  11. </driver-url>    
  12. <!—JDBC驅動程序-->    
  13. <driver-class>com.mysql.jdbc.Driver</driver-class>    
  14. <driver-properties>    
  15. <property name="user" value="root"/>    
  16. <property name="password" value=""/>    
  17. </driver-properties>      
  18. <!-- proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閑的連接就馬上回     
  19. 收,超時的銷毀-->      
  20. <house-keeping-sleep-time>90000</house-keeping-sleep-time>    
  21. <!-- 指因未有空閑連接可以分配而在隊列中等候的最大請求數,超過這個請求數的     
  22. 用戶連接就不會被接受-->      
  23. <maximum-new-connections>20</maximum-new-connections>    
  24. <!-- 最少保持的空閑連接數-->      
  25. <prototype-count>5</prototype-count>    
  26. <!-- 允許最大連接數,超過了這個連接,再有請求時,就排在隊列中等候,最大的     
  27. 等待請求數由maximum-new-connections決定-->      
  28. <maximum-connection-count>100</maximum-connection-count>    
  29. <!-- 最小連接數-->    
  30. <minimum-connection-count>10</minimum-connection-count>    
  31. </proxool>      
  32. </something-else-entirely>     

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

  1. <?xml version='1.0' encoding='UTF-8'?>    
  2. <!DOCTYPE hibernate-configuration     
  3. PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"     
  4. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    
  5. <hibernate-configuration>    
  6. <session-factory >    
  7. <property name="hibernate.connection.provider_class">    
  8. org.hibernate.connection.ProxoolConnectionProvider     
  9. </property>    
  10. <property name="hibernate.proxool.pool_alias">DBPool</property>    
  11. <property name="hibernate.proxool.xml">proxoolconf.xml</property>    
  12. <!--是否將運行期生成的SQL輸出到日志以供調試-->    
  13. <property name="show_sql">true</property>    
  14. <!--指定連接的語言-->    
  15. <property name="dialect">org.hibernate.dialect.MySQLDialect</property>    
  16. <!--映射Student這個資源-->    
  17. <mapping resource="com/wqbi/model/pojo/student.hbm.xml" />    
  18. </session-factory>      
  19. </hibernate-configuration>    

(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) <mapping >資源文件映射

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

數據源已經由應用服務配置好(如Web服務器),Hibernate需要做的只是通過JNDI名查找到此數據源。應用服務器將連接池對外顯示為JNDI綁定數據源,它是javax.jdbc.Datasource類的一個實例。只要配置一個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    

結論:

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

至于c3p0,有評論說它的算法不是最優的,而且,我在matrix中,見到有網友做了一個實驗,在同一項目中分別用了幾個常用的Hibernate連接池配置,然后測試其性能,發現c3p0占用資源比較大,效率也不高。

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

 

【編輯推薦】

  1. Hibernate查詢方法與緩存的關系
  2. Hibernate緩存機制探討
  3. Hibernate臟數據與數據緩存
  4. Hibernate實體對象的生命周期
  5. Hibernate數據加載方式淺析
責任編輯:佚名 來源: JavaeEye
相關推薦

2009-09-22 16:04:50

Hibernate連接

2009-06-17 09:59:46

Hibernate 連

2009-09-22 14:52:55

Hibernate p

2015-04-27 09:50:45

Java Hibern連接池詳解

2009-06-24 07:53:47

Hibernate數據

2009-06-17 09:34:31

Hibernate3Hibernate2連接池

2009-09-22 14:57:34

Hibernate d

2019-12-30 15:30:13

連接池請求PHP

2010-05-17 16:38:08

MySQL 連接池

2011-05-13 09:34:51

TomcatMysql連接池

2009-06-16 09:25:31

JBoss配置

2009-07-09 17:36:44

JDBC連接池配置

2011-06-01 13:54:10

MySQL

2009-09-22 14:44:18

Hibernate.c

2018-02-07 16:23:58

連接池內存池AI

2010-11-08 16:46:57

2022-11-11 09:41:04

連接池微服務數據庫

2009-09-22 17:53:09

Hibernate C

2025-01-10 00:00:10

2010-06-25 10:36:27

Java連接池
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产欧美视频一区二区三区 | 一区二区三区四区国产 | 精品久久影院 | 国产91丝袜在线播放 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日韩在线一区 | 精品国产久 | 综合天天久久 | 九九热免费在线观看 | 日本成人久久 | 国产黄色网 | 亚洲精品免费在线观看 | 亚洲精品99 | 四虎影院欧美 | 亚洲经典一区 | 久久国产秒 | 在线观看视频中文字幕 | 在线亚洲人成电影网站色www | 国产美女福利在线观看 | 亚洲一区二区三区免费观看 | 国产精品一区二区免费看 | 亚洲精品成人 | 日韩在线91| 亚洲一区二区久久 | 欧美高清视频一区 | 日韩色在线 | 国产精品99 | 久久天堂 | 国产三区视频在线观看 | 日韩中文字幕一区二区 | 欧美日韩国产一区二区三区 | 自拍偷拍一区二区三区 | 国产黄色一级片 | 欧美激情亚洲 | av大全在线观看 | 91亚洲国产| 亚洲一区中文字幕在线观看 | www.久草| 久热免费 | 成人在线h | 欧美一区视频在线 |