Hibernate有個回調介面HibernateCallback() ,事務可由Spring管理,具體例子可以Google
想要指定每次批量操作的數可以這樣
public void batchSaveData(final List<?> dataList,final int batchCount) {
return this.getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernat(Session session) throws HibernateException, SQLException {
for (int i = 0; i < dataList.size(); i++) {
session.save(dataList.get(i));
//如果想每1000條一次批處理,調用方法時batchCount傳入1000
if (i % batchCount== 0) {
session.flush();
session.clear();
}
//保存剩餘的數據
session.flush();
session.clear();
}
return null;
}
});
}
[admin via ] spring事務管理與批量增加操作相關問題已經有579次圍觀