hibernate中的java批量更新
批量更新在本地系统上运行良好,但在测试服务器上执行需要数小时。虽然数据库使用不多,包含150000条记录
Session session=hibernateTemplate.getSessionFactory().openSession();
String sqlQuery = "FROM DemoDB";
List<DemoDB> demoList = session.createQuery(sqlQuery).list();
for (int j = 0; j < demoList.size(); j++) {
DemoDB demoObj = demoList.get(j);
if(emailFlagMap.containsKey(demoObj.getEmail()))
{
demoObj.setSendOutDone(emailFlagMap.get(demoObj.getEmail()));
}
session.update(demoObj);
if (j % 1000 == 0 && j > 0) {
session.flush();
session.clear();
}
}
session.flush();
session.clear();
session.close();
}
catch(Exception e)
{
logger.error("Exception occurred while getting response :"+e);
e.printStackTrace();
}
# 1 楼答案
请在下面试试。如果您将任何新值设置为任何字段,则以其他方式更新记录忽略此记录