一对多关系的不同选择

时间:2013-07-01 17:12:16

标签: java hibernate

我正在使用hibernate开发一个示例应用程序。它很顺利,但我有一个关于一对多关系的小问题。 我已经看到有两种不同的方式来指定关系

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "STUDENT_PHONE", joinColumns = { @JoinColumn(name = "STUDENT_ID") },     inverseJoinColumns = { @JoinColumn(name = "PHONE_ID") })
public Set<Phone> getStudentPhoneNumbers() { 
return this.studentPhoneNumbers;
}

另一种方式是

@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name="PERSON_ID", nullable=false)
public Set<Address> getAddresses() {
    return addresses;
}

哪个更有效,何时使用哪种方法。

1 个答案:

答案 0 :(得分:0)

第二个可能更高效,因为它需要一个小于第一个的连接。

但它通过在地址表中要求外键将多方(地址)耦合到一方(人)。这与关联是单向的事实相矛盾(地址不知道对象模型中的人)。

这就是为什么第二个是单向一对多关联的默认值。