假设我有一个List
的懒惰抓取Member
:
@OneToMany
List<Member> getMemberList() {
return this.memberList;
}
如果我在活跃的JPA会话中执行以下操作:
List<Member> mList = obj.getMemberList();
for (Member m : mList) {
m.getName();
}
我知道此操作的常见做法是调用mList.size()
方法。我只是想知道当我迭代集合并在每个元素上调用getXX()
方法时会发出多少个查询?我使用Hibernate作为JPA的提供商。
答案 0 :(得分:0)
一个查询。
除非getName()方法也是懒惰的....在这种情况下'N + 1'查询。
但是,既然你在询问memberList,那就是1.列表的单个延迟加载(好的,最多可以获取限制/批量大小)。 size()方法并不神奇。常规用法(例如迭代)将触发延迟加载引用代理的“错误”并获取数据。