我正在使用以下代码集进行更新:
private void updateAvatarPath(Integer param1, String param2, String param3, boolean param4){
Transaction avatarUpdatePathTransaction = session.beginTransaction();
String updateQuery = "query goes here with param";
Query query = session.createSQLQuery(updateQuery);
query.executeUpdate();
avatarUpdatePathTransaction.commit();
session.flush();
}
此函数是从循环调用的。因此,这需要时间来更新,因为对于每个循环,它都会命中数据库。而不是每次都命中DB,为了提高性能,我计划批量执行它。但是不知道该怎么做。
session.doWork()
是我得到的解决方案之一。我想知道任何其他可用的选项。
您应该在循环开始之前移动Transaction avatarUpdatePathTransaction = session.beginTransaction();
,在循环结束后移动avatarUpdatePathTransaction.commit();
。
建议的模式是每个"工作单元"有一个会话,在您的情况下,这似乎是在单个会话/事务中修改多个实体。
我认为session.flush();
不是必需的,提交事务应该刷新会话