Hibernate配置文件可以有兩種格式
一種是hibernate
properties
另一種是hibernate
cfg
xml
後者稍微方便一些
當增加hbm映射文件的時候
可以直接在hibernate
cfg
xml裡面增加
不必像hibernate
properties必須在初始化代碼中加入
但不管怎麼說
兩種的配置項都是一樣的
下面詳細介紹
在Hibernate的src目錄下有一個hibernate
properties模板
我們不必自己從頭寫
修改模板就可以了:)
hibernate
query
substitutions true
false
yes
Y
no
N
這個配置意思是當你在Hibernate裡面輸入true的時候
Hibernate會轉化為
插入數據庫
當你在Hibernate裡面輸入false的時候
Hibernate會轉化為
插入數據庫
後面的Y
N同理
對於某些數據庫
例如Oracle來說
沒有boolean數據類型
就是采用
代表true
代表false
因此使用這個配置在Hibernate裡面直接用true/false會非常直觀
hibernate
dialect net
sf
hibernate
dialect
MySQLDialect
nnection
driver_class com
mysql
jdbc
Driver
nnection
url jdbc:mysql:///nnection
username root
nnection
password
這是一個連接MySQL數據庫的例子
很直觀
不必解釋
不同的數據庫的連接參數模板中全部給出了
nnection
pool_size
hibernate
statement_cache
size
這是Hibernate自帶的連接池的配置參數
在默認情況下將采用
意義很直觀
不多解釋
只是提醒一點
Hibernate這個連接池是非常原始非常簡單的連接池
如果你在項目中用Hibernate的話
建議你首選App Server的連接池
次選Hibernate帶的DBCP連接池
自帶的連接池應該做為末選
如果你采用DBCP連接池
除了要配置DBCP連接池以外
還需要取消掉下行的注釋
nnection
provider_class nnection
DBCPConnectionProvider
其它的連接池同理
如果采用App Server的連接池
假設App Server連接池的DataSource的JNDI名稱為
mypool
的話
配置應該如下
hibernate
dialect net
sf
hibernate
dialect
MySQLDialec
nnection
datasource nnection
provider_class nnection
DatasourceConnectionProvider
其它參數就不必寫了
因為已經在App Server配置連接池的時候指定好了
如果你不是在App Server環境中使用Hibernate
例如遠程客戶端程序
但是你又想用App Server的數據庫連接池
那麼你還需要配置JNDI的參數
例如Hibernate連接遠程Weblogic上的數據庫連接池
hibernate
dialect net
sf
hibernate
dialect
MySQLDialect
nnection
datasource mypool
nnection
provider_class net
sf
nnection
DatasourceConnectionProviderhibernate
jndi
class weblogic
jndi
WLInitialContextFactory
hibernate
jndi
url t
://servername:
/
最後
如果你需要在EJB或者JTA中使用Hibernate
需要取消下行的注釋
hibernate
transaction
factory_class net
sf
hibernate
transaction
JTATransactionFactory
雜項配置
hibernate
show_sql false
是否將Hibernate發送給數據庫的sql顯示出來
這是一個非常非常有用處的功能
當你在調試Hibernate的時候
讓Hibernate打印sql語句
可以幫助你迅速解決問題
#nnection
isolation
指定數據庫的隔離級別
往往不同的數據庫有自己定義的隔離級別
未必是Hibernate的設置所能更改的
所以也不必去管它了
hibernate
jdbc
fetch_size
hibernate
jdbc
batch_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