哪种更新数据更有效?

时间:2017-07-25 10:19:23

标签: hibernate orm

有一个名为company_master的表,每个user_id都有多行。我正在更新此表并将其列之一设置为false

首选哪种方式?

1)从List<CompanyMaster>表中获取company_master然后设置状态字段,然后在循环中更新对象

2)直接写这样的查询

Query query= session.createQuery("update CompanyMaster set status=:status where userId= :userId"); query.setParameterList("status", false); query.setParameterList("userId", 1); query.executeUpdate();

1 个答案:

答案 0 :(得分:0)

如果可以,在您的情况下,您可以和您应该使用直接查询来进行更新或删除操作。您不必在之前选择记录并进行更新,因为它比直接更新要慢 - 您选择了不需要更新/删除的数据,而不是更新/删除。需要在服务器端迭代它(因为它在性能上比在db端更慢)。另外,当你需要更新大量记录并且在这种情况下从java内存中的db中选择时,你可能会遇到这种情况,它只是浪费了内存消耗。