熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Hibernate--基礎配置

2013-11-23 20:07:59  來源: Java開源技術 
    Hibernate配置文件可以有兩種格式一種是hibernateproperties另一種是hibernatecfgxml後者稍微方便一些當增加hbm映射文件的時候可以直接在hibernatecfgxml裡面增加不必像hibernateproperties必須在初始化代碼中加入
    但不管怎麼說兩種的配置項都是一樣的下面詳細介紹
    在Hibernate的src目錄下有一個hibernateproperties模板我們不必自己從頭寫修改模板就可以了:)
    hibernatequerysubstitutions true false yes Y no N
    這個配置意思是當你在Hibernate裡面輸入true的時候Hibernate會轉化為插入數據庫當你在Hibernate裡面輸入false的時候Hibernate會轉化為插入數據庫後面的YN同理
    對於某些數據庫例如Oracle來說沒有boolean數據類型就是采用代表true代表false因此使用這個配置在Hibernate裡面直接用true/false會非常直觀
    hibernatedialect netsf
    hibernatedialectMySQLDialect
    nnectiondriver_class commysqljdbcDriver
    nnectionurl jdbc:mysql:///nnectionusername root
    nnectionpassword
    這是一個連接MySQL數據庫的例子很直觀不必解釋不同的數據庫的連接參數模板中全部給出了
    nnectionpool_size
    hibernatestatement_cachesize
    這是Hibernate自帶的連接池的配置參數在默認情況下將采用意義很直觀不多解釋
    只是提醒一點Hibernate這個連接池是非常原始非常簡單的連接池如果你在項目中用Hibernate的話建議你首選App Server的連接池次選Hibernate帶的DBCP連接池自帶的連接池應該做為末選
    如果你采用DBCP連接池除了要配置DBCP連接池以外還需要取消掉下行的注釋
    nnectionprovider_class nnectionDBCPConnectionProvider
    其它的連接池同理
    如果采用App Server的連接池假設App Server連接池的DataSource的JNDI名稱為mypool的話配置應該如下
    hibernatedialect netsf
    hibernatedialectMySQLDialec
    nnectiondatasource nnectionprovider_class nnectionDatasourceConnectionProvider
    其它參數就不必寫了因為已經在App Server配置連接池的時候指定好了
    如果你不是在App Server環境中使用Hibernate例如遠程客戶端程序但是你又想用App Server的數據庫連接池那麼你還需要配置JNDI的參數例如Hibernate連接遠程Weblogic上的數據庫連接池
    hibernatedialect netsfhibernatedialectMySQLDialect
    nnectiondatasource mypool
    nnectionprovider_class netsf
    nnectionDatasourceConnectionProviderhibernatejndiclass weblogicjndiWLInitialContextFactory
    hibernatejndiurl t://servername:/
    最後如果你需要在EJB或者JTA中使用Hibernate需要取消下行的注釋
    hibernatetransactionfactory_class netsfhibernatetransactionJTATransactionFactory
    雜項配置
    hibernateshow_sql false
    是否將Hibernate發送給數據庫的sql顯示出來這是一個非常非常有用處的功能當你在調試Hibernate的時候讓Hibernate打印sql語句可以幫助你迅速解決問題
    #nnectionisolation
    指定數據庫的隔離級別往往不同的數據庫有自己定義的隔離級別未必是Hibernate的設置所能更改的所以也不必去管它了
    hibernatejdbcfetch_size hibernatejdbcbatch_size
    這兩個選項非常非常非常重要!!!將嚴重影響Hibernate的CRUD性能!
    C = create R = read U = update D = delete
    Fetch Size 是設定JDBC的Statement讀取數據的時候每次從數據庫中取出的記錄條數
    例如一次查詢萬條記錄對於Oracle的JDBC驅動來說是不會次性把萬條取出來的而只會取出Fetch Size條數當紀錄集遍歷完了這些記錄以後再去數據庫取Fetch Size條數據
    因此大大節省了無謂的內存消耗當然Fetch Size設的越大讀數據庫的次數越少速度越快Fetch Size越小讀數據庫的次數越多速度越慢
    這有點像平時我們寫程序寫硬盤文件一樣設立一個Buffer每次寫入Buffer等Buffer滿了以後一次寫入硬盤道理相同
    Oracle數據庫的JDBC驅動默認的Fetch Size=是一個非常保守的設定根據我的測試當Fetch Size=的時候性能會提升倍之多
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27988.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.