考虑以下类。该类Parent
包含 Child
一个 OneToMany 关系中的类列表。如果我想建立双向关系,我必须将孩子添加到父母的孩子列表中,并将父母设置为孩子。
要将孩子添加到父母的孩子列表中,我首先必须加载所有孩子的列表。如果我有一个很大的孩子名单并且我实际上不需要孩子做任何事情,我认为这是一个很大的开销。
查看示例代码。我可以优化它还是 JPA 已经为这种操作进行了某种优化?
在此示例中,我跳过了 EntityManager 代码,但我认为代码应该做什么很清楚。
这是Child
课程:
@Entity
public class Child {
Parent parent;
@ManyToOne
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
}
这是Parent
课程:
@Entity
public class Parent {
List<Child> children;
@OneToMany(mappedBy = "parent")
public List<Child> getChildren() {
return children;
}
public void setChildren(List<Child> children) {
this.children = children;
}
}
并且这个类建立了双向关系。
public class Tester {
public static void main(String[] args) {
// in a real application i would load that from the
// DB and it would maybe have already a lot of children
Parent parent = new Parent();
Child child = new Child(); //
// Set bidirectional relation
// Isn't this line a lot of overhead -> need to load all the children just to add an additional one?
parent.getChildren().add(child);
child.setParent(parent);
}
}