2013-05-29 84 views
0

hibernateTemplate flush()和clear()方法有什麼區別?哪一個使用時?hibernateTemplate Flush()和clear()方法有什麼區別?

我有以下代碼

public void saveAllReportRoomRes(List<ReportRoomRes> reportRoomResList) throws DataAccessException { 
    hibernateTemplate.saveOrUpdateAll(reportRoomResList); 
    hibernateTemplate.flush(); 
    } 

我稱之爲循環此方法,它通過每個時間的記錄列表(總記錄可以是2個以上LACS)。因爲我的代碼在事務中,有時在後續的迭代中,如果hibernate發現相同的主鍵(我有複合主鍵)對象,它會拋出NonUniqueObject異常。但實際上它需要更新之前插入的記錄。

如果我用戶HibernateTemplate.clear(),它正在工作。

也是保存或更新大量記錄的好方法嗎?因爲這是我通常的情況,我在一定的時間間隔將數據從一個數據庫複製到另一個數據庫。

回答

1

休眠Session.clear():

無效org.hibernate.Session.clear()

從session緩存中刪除的所有對象,並取消所有待處理的保存,更新和刪除。

Where as Session.flush 刷新所有掛起的保存,更新和刪除數據庫。

http://docs.spring.io/spring/docs/2.5.x/api/org/springframework/orm/hibernate3/HibernateTemplate.html

選擇正確的一個,取決於交易類型,你選擇。

回答一個問題

使用批處理更新大量記錄。

+0

你說過:使用Batch更新大量記錄。什麼是批次?其他框架如春天批量? –

+0

是的。我只提到spring批處理模板 –

相關問題