这是我的代码:
HibernateUtil.pushFlushMode(FlushMode.MANUAL);
getCurrSess().beginTransaction();
try {
for(i=0; i<list.size(); i++) {
Obj dummy = list.get(i);
// Here Multiple things can happen like selects, save, update and deletes of different objects which are related to dummy object....
if (i > 0 && (i % 10 == 0)) {
getCurrSess().getTran().commit();
getCurrSess().beginTransaction();
if (i % BATCH_SIZE == 0) {
getCurrSess().flush();
Thread.sleep(20);
}
}
}
} catch(Exception e) {
getCurrSess().getTran().rollback();
} finally {
HibernateUtil.popFlushMode();
}
每 10 个提交的事务 (i=100) 发生一次刷新。这是占用大量处理的后台作业的一部分。对象的数量在 20,000 左右变化,在整个过程完成之前我无法清除会话,因为我最终出现了延迟初始化异常。我的代码工作正常,但在这里我对手动模式下刷新和提交的顺序感到困扰。这可以以更好的方式完成吗?