我对 @OneToMany
的效率有一些疑问。假设对象 A 内部有 B 对象的集合,并且该集合有 100k 个对象
class A {
List<B> b; //.size() == 100.000
...
}
即使我将 b 标记为 fetch LAZY,下面的伪代码会做什么?
select from database object into A a;
a.b.add(new B());
如果我是正确的,因为我访问了字段,所以必须加载它,是吗?那么为了进行一次插入,我已经从数据库下载了 100k 行?
谁能解答我的疑惑?
最佳答案
是的,你是对的:所有 100k 行都将被加载。
要做什么?
我认为从 B 到 A 也存在反向关系。在这种情况下,为了避免性能问题,当 A 的 B 列表未加载时,您会保留 B 实例。或者,您可以进行 native 查询。
关于java - JPA ORM关系高效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20574724/