hibernateTemplate の flush() メソッドと clear() メソッドの違いは何ですか? いつどれを使う?
次のコードがあります
public void saveAllReportRoomRes(List<ReportRoomRes> reportRoomResList) throws DataAccessException {
hibernateTemplate.saveOrUpdateAll(reportRoomResList);
hibernateTemplate.flush();
}
毎回レコードのリストを渡すループでこのメソッドを呼び出します(合計レコードは2ラックを超える場合があります)。私のコードはトランザクションの下にあるため、その後の反復で、休止状態が同じ主キー (複合主キーがある) オブジェクトを見つけた場合、NonUniqueObject Exception がスローされます。しかし実際には、以前に挿入されたレコードを更新する必要があります。
HibernateTemplate.clear() を使用すると、機能しています。
また、大量のレコードを保存または更新するのに適した方法ですか? これは、あるDBから別のDBに一定の間隔でデータをコピーする私の通常のケースです。