設置hibernatejdbcbatch_size參數可參考如下配置
<hibernateconfiguration> <sessionfactory>……
<property name= hibernatejdbcbatch_size></property>……
<sessionfactory> <hibernateconfiguration>
配置hibernatejdbcbatch_size參數的原因就是盡量少讀數據庫hibernatejdbcbatch_size參數值越大讀數據庫的次數越少速度越快從上面的配置可以看出Hibernate是等到程序積累到了個SQL之後再批量提交
筆者也在想hibernatejdbcbatch_size參數值也可能不是設置得越大越好從性能角度上講還有待商榷這要考慮實際情況酌情設置一般情形設置就可以滿足需求了
程序實現方面筆者以插入條數據為例子如
Session session=HibernateUtilcurrentSession()
Transatcion tx=sessionbeginTransaction()
for(int i=i<i++)
{
Student st=new Student()
stsetName(feifei)
sessionsave(st)
if(i%==) //以每個數據作為一個處理單元
{
sessionflush() //保持與數據庫數據的同步
sessionclear() //清除內部緩存的全部數據及時釋放出占用的內存
}
}
txcommit()
……
在一定的數據規模下這種做法可以把系統內存資源維持在一個相對穩定的范圍
注意前面提到二級緩存筆者在這裡有必要再提一下如果啟用了二級緩存從機制上講Hibernate為了維護二級緩存我們在做插入更新刪除操作時Hibernate都會往二級緩存充入相應的數據性能上就會有很大損失所以筆者建議在批處理情況下禁用二級緩存
[] [] [] [] []
From:http://tw.wingwit.com/Article/program/Java/ky/201311/29175.html