如何使用休眠会话批量执行 SQL 查询



我正在使用以下代码集进行更新:

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();不是必需的,提交事务应该刷新会话

最新更新