歡迎您光臨本站 註冊首頁

Hibernate--基礎配置

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
Hibernate配置文件可以有兩種格式,一種是hibernate.properties,另一種是hibernate.cfg.xml.後者稍微方便一些,當增加hbm映射文件的時候,可以直接在hibernate.cfg.xml裡面增加,不必像hibernate.properties必須在初始化代碼中加入.
但不管怎麼說,兩種的配置項都是一樣的,下面詳細介紹:
在Hibernate的src目錄下有一個hibernate.properties模板,我們不必自己從頭寫,修改模板就可以了:)
hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
這個配置意思是當你在Hibernate裡面輸入true的時候,Hibernate會轉化為1插入資料庫,當你在Hibernate裡面輸入false的時候,Hibernate會轉化為0插入資料庫,後面的Y,N同理.
對於某些資料庫,例如Oracle來說,沒有boolean數據類型,就是採用1代表true,0代表false,因此使用這個配置在Hibernate裡面直接用true/false會非常直觀.
hibernate.dialect net.sf.
hibernate.dialect.MySQLDialect
hibernate.connection.driver_class com.mysql.jdbc.Driver
hibernate.connection.url jdbc:mysql:///testhibernate.connection.username root
hibernate.connection.password
這是一個連接MySQL資料庫的例子,很直觀,不必解釋,不同的資料庫的連接參數模板中全部給出了.
hibernate.connection.pool_size 1
hibernate.statement_cache.size 25
這是Hibernate自帶的連接池的配置參數,在默認情況下將採用.意義很直觀,不多解釋.
只是提醒一點,Hibernate這個連接池是非常原始非常簡單的連接池,如果你在項目中用Hibernate的話,建議你首選App Server的連接池,次選Hibernate帶的DBCP連接池.自帶的連接池應該做為末選.
如果你採用DBCP連接池,除了要配置DBCP連接池以外,還需要取消掉下行的註釋:
hibernate.connection.provider_class net.sf.hibernate.connection.DBCPConnectionProvider
其它的連接池同理.
如果採用App Server的連接池,假設App Server連接池的DataSource的JNDI名稱為「mypool」的話,配置應該如下:
hibernate.dialect net.sf.
hibernate.dialect.MySQLDialec
thibernate.connection.datasource mypoolhibernate.connection.provider_class net.sf.hibernate.connection.DatasourceConnectionProvider
其它參數就不必寫了,已經在App Server配置連接池的時候指定好了.
如果你不是在App Server環境中使用Hibernate,例如遠程客戶端程序,但是你又想用App Server的資料庫連接池,那麼你還需要配置JNDI的參數,例如Hibernate連接遠程Weblogic上的資料庫連接池:
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.datasource mypool
hibernate.connection.provider_class net.sf.
hibernate.connection.DatasourceConnectionProviderhibernate.jndi.class weblogic.jndi.WLInitialContextFactory


hibernate.jndi.url t3://servername:7001/
,如果你需要在EJB或者JTA中使用Hibernate,需要取消下行的註釋:
hibernate.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory
雜項配置:
hibernate.show_sql false
是否將Hibernate發送給資料庫的sql顯示出來,這是一個非常非常有用處的功能.當你在調試Hibernate的時候,讓Hibernate列印sql語句,可以幫助你迅速解決問題.
#hibernate.connection.isolation 4
指定資料庫的隔離級別,往往不同的資料庫有自己定義的隔離級別,未必是Hibernate的設置所能更改的,也不必去管它了.
hibernate.jdbc.fetch_size 50hibernate.jdbc.batch_size 25
這兩個選項非常非常非常重要!!!將嚴重影響Hibernate的CRUD性能!
C = create, R = read, U = update, D = delete
Fetch Size 是設定JDBC的Statement讀取數據的時候每次從資料庫中取出的記錄條數.
例如一次查詢1萬條記錄,對於Oracle的JDBC驅動來說,是不會1次性把1萬條取出來的,而只會取出Fetch Size條數,當紀錄集遍歷完了這些記錄以後,再去資料庫取Fetch Size條數據.
因此大大節省了無謂的內存消耗.當然Fetch Size設的越大,讀資料庫的次數越少,速度越快;Fetch Size越小,讀資料庫的次數越多,速度越慢.
這有點像平時我們寫程序寫硬碟文件一樣,設立一個Buffer,每次寫入Buffer,等Buffer滿了以後,一次寫入硬碟,道理相同.
Oracle資料庫的JDBC驅動默認的Fetch Size=10,是一個非常保守的設定,根據我的測試,當Fetch Size=50的時候,性能會提升1倍之多.


[火星人 ] Hibernate--基礎配置已經有513次圍觀

http://coctec.com/docs/java/show-post-60027.html