1

有时,在我们有实体 ID 列表的情况下,我必须更新一组相关的已传递 ID 实体的字段,我正在徘徊在哪些情况下最好通过 1-st 使用标准方式:加载所有实体和 2-nd:调用相关的 set() 方法:

List<Long> ids = ....;
String par = "example";
List<User> users = USER_DAO.getUsers(ids);
for(User user : users) {
   user.setField(par);
}

或者另一种方式是通过执行批量更新操作,例如:

Query query = em.createQuery("UPDATE User user SET user.field =:1? WHERE user.id IN : 2?");
int rowCount = query.executeUpdate();

您对该问题有一些了解和/或调查吗?或者情况,当第一种方式比第二种方式更好或 vs. 时?

欢迎所有建议,谢谢,SImeon

4

1 回答 1

1

第二种方式会执行得更好,因为在数据库上执行的 sql 会更少。在您的第一种情况下,将为每个用户执行两个 sql(一个用于选择,一个用于更新)。在您的第一种情况下,当休眠将 sql 映射到对象时,您也会受到性能影响。

于 2013-01-04T17:12:37.353 回答