[英]Does JPA load entities in JPQL, as it does when using entities in code?
我有两个表: 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进行的更新是否具有与代码中相同的性能? 还是我应该使用本机查询来不加载实体,因为我只想要性能。
使用查询将更快(并且内存效率更高),因为查询提供程序会将JPQL查询转换为本机SQL。 同样,如果直接使用实体,则对数据库的查询数量将大大增加(每行一次选择并更新)。
本机查询将更快,因为它无需翻译任何内容。
如果您希望它更快,可以使用PreparedStatement 。 使用.addBatch()方法,您可以将查询添加到批处理中,而使用executeBatch()方法,您将执行完整的批处理,从而最大程度地减少了在用户和内核模式之间切换的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.