Hibernate 哪种更新数据的方式更有效?

Hibernate 哪种更新数据的方式更有效?,hibernate,orm,Hibernate,Orm,有一个名为company\u master的表,每个用户id有多行。我正在更新此表,并将其中一列设置为false 哪种方式比较好 1) 从company\u master表中获取列表,然后设置状态字段,然后更新循环中的对象 2) 像这样直接编写查询 Query Query=session.createQuery(“更新CompanyMaster set status=:status,其中userId=:userId”); query.setParameterList(“状态”,false); s

有一个名为
company\u master
的表,每个用户id有多行。我正在更新此表,并将其中一列设置为
false

哪种方式比较好

1) 从
company\u master
表中获取
列表
,然后设置状态字段,然后更新循环中的对象

2) 像这样直接编写查询

Query Query=session.createQuery(“更新CompanyMaster set status=:status,其中userId=:userId”);
query.setParameterList(“状态”,false);
setParameterList(“userId”,1);

query.executeUpdate()

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