Hibernate基礎配置選項主要圍繞SessionFactory展開:
在hibernate.cfg.xml配置文件中,我們可以通過mapping節點配置需要加載的Hibernate映射文件,如果選用了propertie
形式的配置文件(hibernate.properties),由于缺乏相應的配置條目,這時候就需要通過編碼進行加載:
Configuration cfg = new Configuration().addFile("TUser.hbm.xml").addClass(com.redsage.db.entity.TGroup.class)
1、添加位于CLASSPATH根目錄下的TUser.hbm.xml映射文件
2、以class形式加載映射實體類com.readsage.db.entity.TGroup
在Hibernate中,可以設置2種數據庫訪問策略:一種是根據指定的JDBC參數進行數據庫連接,由Hibernate來完成連接管
理過程:另外一種則是通過JNDI完成數據庫連接獲取。
1、數據庫適配器
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
2、數據庫JDBC驅動類
hibernate.connection.driver_class com.mysql.jdbc.Driver
JNDI配置:
hibernate.connection.datasource jdbc/test
3、數據庫URL
hibernate.connection.url jdbc:mysql://localhost/sample
4、數據庫用戶名
hibernate.connection.username root
5、數據庫密碼
hiberante.connection.password
當我們使用JDBC方式訪問數據庫時,可以為其指定數據庫連接池實現,目前Hibernate支持4種連接池實現組件:
C3P0:
hibernate.c3p0.max_size 2
hibernate.c3p0.min_size 2
//獲得連接的超時時間,如果超過這個時間,會拋出異常,單位毫秒
hibernate.c3p0.timeout 5000
//最大的PreparedStatement的數量
hibernate.c3p0.max_statements 100
//每隔3000秒檢查連接池里的空閑連接 ,單位是秒
hibernate.c3p0.idle_test_period 3000
//當連接池里面的連接用完的時候,C3P0一下獲取的新的連接數
hibernate.c3p0.acquire_increment 2
//每次都驗證連接是否可用
hibernate.c3p0.validate false
hibernate.connection.provider_class net.sf.hibernate.connection.C3p0ConnectionProvider
解釋:
hibernate.c3p0.timeout,這個表示連接池中的連接對象在多長時間沒有使用過后,就應該被銷毀
hibernate.c3p0.idle_test_period ,這個表示連接池檢測線程多長時間檢測一次池內的所有鏈接對象是否超時
注意:連接對象自己不會把自己從連接池中移除,而是專門有一個線程按照一定的時間間隔
(hibernate.c3p0.idle_test_period )來做這件事,這個線程通過比較連接對象最后一次被使用時間和當前時間的時間差來
和hibernate.c3p0.timeout做對比,進而決定是否銷毀這個連接對象。
DBCP:
//連接池的最大活動個數
hibernate.dbcp.maxActive 100
//當連接池中的連接已經被耗盡的時候,DBCP將怎樣處理( 0 = 失敗, 1 = 等待, 2= 增長)
hibernate.dbcp.whenExhaustedAction 1
//最大等待時間
hibernate.dbcp.maxWait 120000
//沒有人用連接的時候,最大閑置的連接個數。
hibernate.dbcp.maxIdle 10
hibernate.dbcp.ps.maxActive 100
hibernate.dbcp.ps.whenExhaustendAction 1
hibernate.dbcp.ps.maxWait 120000
hibernate.dbcp.ps.maxIdle 10
//給出一條簡單的sql語句進行驗證
hibernate.dbcp.validationQuery select 1 from dual
//在取出連接時進行有效驗證
hibernate.dbcp.testOnBorrow true
//在放回連接時進行有效驗證
hibernate.dbcp.testOnreturn false
//Hibernate已經實現了DBCP Provider實現,別忘了在下面的鍵值去掉#字符
hibernate.connection.provider_class net.sf.hibernate.connection.DBCPConnectionProvider
posted on 2009-10-11 11:11
王永慶 閱讀(292)
評論(0) 編輯 收藏 所屬分類:
HIBERNATE