0

阅读本文后在此处输入链接描述

我的想法是 fetch mode = LAZY 总是会导致 N +1 问题。这是真的?如果是这样,为什么?即使获取类型是 LAZY,OpenJPA/Hibernate 也应该能够优化查询。不?

4

2 回答 2

0

您可以在查询中指定 Eager fetch 以避免它。这会产生一个 JOIN sql。

Criteria c = session.createCriteria(Entity1.class);
c.setFetchMode("anotherObj", FetchMode.JOIN)
return c.list();
于 2013-07-30T03:54:13.953 回答
0

是的,它会的。但是只有在访问关系中定义的对象时才会执行额外的 SELECT(这就是它被称为 LAZY 加载的原因)。

这是一篇很好的文章,更详细地解释了它:http ://www.mkyong.com/hibernate/hibernate-fetching-strategies-examples/

干杯

于 2013-07-31T03:23:09.233 回答