用于插入关系的JPA映射

时间:2012-12-17 12:35:45

标签: java sql jpa

我正在使用JPA来保留我的实体。假设我在实体A和B之间有ManyToMany的关系。因此,在课程A中,它将是List<B>,而BList<A>

我的问题是关于增加新关系的效率。 我可以通过简单的方式在课程add(new B())的列表中创建A。当我在运行时调用add方法时,类List中的BA对象是否都将从数据库加载?这有效吗?

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

通常,JPA提供程序提供自己的Java Collections实现,支持延迟加载,因此并非所有关系都会从一开始就加载。

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

答案 2 :(得分:0)

当它开始运行到数百个时,最好只将连接表映射为JPA实体,而不是使用ManyToMany映射,而只是直接在连接表上使用两个ManyToOne映射执行操作(突变和选择)在那里。