gpt4 book ai didi

java - 更新表的多行最快的方法是什么

转载 作者:可可西里 更新时间:2023-11-01 07:06:50 24 4
gpt4 key购买 nike

我有一个名为 messages 的表,其中包含 toUsermessagestatus 列。我想更新特定用户消息的所有状态。

所以,我写了这样一个查询,

Session s = DB.getSession();
s.createSQLQuery("UPDATE `message` SET `status`='0' WHERE `toUser`='3'").executeUpdate();
s.close();

但是后来,有人告诉我使用纯 hibernate 方法更新更快更高效(我认为它必须对 hibernate 池做一些事情),如下所示。

Session s = DB.getSession();
Transaction tr = s.beginTransaction();
Criteria cr = s.createCriteria(Connection.Pojo.Message.class);
cr.add(Restrictions.eq("toUser", 3));
List<Connection.Pojo.Message> l = cr.list();
for (Connection.Pojo.Message msg : l) {
msg.setStatus((byte) 0);
s.update(msg);
}
tr.commit();
s.close();

那么,我的问题是更新这些行的最快方法是什么?如果可能,请提供详细的答案。

感谢任何建议。

最佳答案

我认为“纯 Hibernate 方法”是指使用 HQL update :

Session s = DB.getSession();
s.createQuery("UPDATE message m SET m.status=:newStatus WHERE toUser=:userId")
.setInteger("newStatus", 0)
.setInteger("userId", 3)
.executeUpdate();
s.close();

此方法提供的性能与您的 SQL 解决方案相当。

关于java - 更新表的多行最快的方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com