我有两个表:Person
和House
,映射是一对一的。
现在我必须将Person
和House
(可以不同)的address
分配给同一个地址。
有超过 5000 条记录。哪个会更快?使用代码来一一更新实体,例如
for (id : Ids) {
Person person = PersonDAO.find(id);
person.setAddress ("abc");
}
然后对House
做同样的事情;
或者我应该使用 JPQL 在两个不同的查询中更新两者,例如
UPDATE Person p SET p.Address = "abc" WHERE ID IN(.....ID QUERY)
我的问题是什么会更快?使用JPQL更新是否具有与代码中相同的性能?或者我应该使用 native 查询来不加载实体,因为我只想要性能。
最佳答案
使用查询会更快(并且内存效率更高),因为查询提供程序会将 JPQL 查询转换为 native SQL。此外,如果直接使用实体,则对数据库进行的查询数量将显着增加(对每一行进行一次选择和更新)。
关于java - JPA 是否会像在代码中使用实体时那样在 JPQL 中加载实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554989/