1

我正在使用 JPA 来持久化我的实体。假设我ManyToMany在实体 A 和 B 之间存在关系。因此,在类A中它将是 aList<B>Ba List<A>

我的问题是关于添加新关系的效率。以简单的方式,我可以add(new B())在 class 的列表中创建一个A。当我在运行时调用 add 方法时,类List中的B对象A会全部从数据库中加载吗?这有效率吗?

如果我有 200 个关系,它将加载所有关系,以简单地添加一个新对象B?最好创建一个本机查询以在ManyToMany表中插入新行。

4

3 回答 3

2

List 上的 add() 行为取决于 JPA 提供程序。

对于 EclipseLink,对于 LAZY List 关系 add() 不会导致默认获取列表。

于 2012-12-17T14:46:49.273 回答
1

通常,JPA 提供者提供他们自己的支持延迟加载的 Java 集合实现,因此并非所有关系都会从一开始就被加载。

此外,当您按照描述修改任何列表时,JPA 提供程序应该透明地更新数据库。除了您可能自己缓存的引用之外,您不必担心保持一致。

于 2012-12-17T14:39:22.600 回答
0

当它开始达到数百个时,您最好将连接表映射为 JPA 实体,而不使用多对多映射,而直接在连接表上执行操作(突变和选择),其中包含两个多对一映射。

于 2012-12-17T14:37:25.127 回答