Hibernate 批量更新資料

2021-07-07 07:13:30 字數 944 閱讀 1187

進行批量更新時,如果一下子把所有物件載入到session的快取中,然後再進快取中一一更新它們,顯然是不可取的,為了解決這一問題,可以使用滾動的結果集

org.hibernate.scrollableresults,query的 scroll()方法返回乙個scrollableresults物件。以下是示例,該**一開始利用scrollableresults物件來家在所有的customer

物件session session = sessionfactory.opensession();

transaction tx = session.begintransaction();

scrollableresults customers = session.createquery("from customer").scroll(scrollmode.forward_only);

int count = 0;

while(customers.next())

tx.commit();

session.close();

只有當程式遍歷訪問scrollableresults物件中的特定元素時,它才會到資料庫中載入相應的customer物件。

為了保證以上程式順利執行,需要遵守一下約束:

1.在hibernate的配置檔案中,應該把hibernate.jdbc.batch_size屬性也設為20。

2.關閉第二級快取,假如已經在配置檔案中啟用了第二級快取,也可以通過以下方式在程式中hulve第二級快取:

scrollableresults customers = session.createquery("from customer").setcachemode(cachemode.ignore).scroll(scrollmode.forword_only);

hibernate的批量更新 批量刪除

hibernate的批處理api session.createquery hql executeupdate 如果有引數則在執行之前設定引數。批量更新示例 test public void testbatchupdate 批量刪除示例 test public void testbatchdelete...

Hibernate批量更新和批量刪除

在最近的銀行系統中多處涉及到批量操作問題,起初用hibernate的更新用法沒太注意,開發的時候由於資料量少,看不出有什麼效能問題,到後來造大量資料測試的時候,發現反應超慢,後倆經過仔細分析考慮,採用了儲存過程的方式來解決,果然系統反應快了很多,以下就是解決問題的過程,以客戶資訊表customers...

hibernate批量更新效果不好

批量更新是指在乙個事務中更新大批量資料,批量刪除是指在乙個事務中刪除大批量資料。以下程式直接通過hibernate api批量更新customers表中年齡大於零的所有記錄的age欄位 tx session.begintransaction iterator customers session.fi...