hibernateTemplate flush()和clear()方法有什么区别?哪一个使用的时候?
我有以下代码
public void saveAllReportRoomRes(List<ReportRoomRes> reportRoomResList) throws DataAccessException {
hibernateTemplate.saveOrUpdateAll(reportRoomResList);
hibernateTemplate.flush();
}
我在循环中调用此方法,每次传递记录列表(总记录可能超过2个lacs)。因为我的代码在事务中,有时在后续迭代中,如果hibernate找到相同的主键(我有复合主键)对象,则抛出NonUniqueObject异常。但实际上它需要更新之前插入的记录。
如果我使用HibernateTemplate.clear(),它正在工作。
也是保存或更新大量记录的好方法吗?因为这是我通常的情况,我以一定的间隔将数据从一个数据库复制到另一个数据库。
答案 0 :(得分:2)
Hibernate Session.clear():
void org.hibernate.Session.clear()
从会话缓存中删除所有对象,并取消所有待处理的保存,更新和删除。
Session.flush的位置 刷新所有挂起的保存,更新和删除数据库。
选择正确的,取决于您选择的交易类型。
回答另外一个问题
使用Batch更新大量记录。