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