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