我正在使用休眠模式开发示例应用程序。它进行得很顺利,但是我有一个关于一对多关系的小查询。
我已经看到了两种指定关系的方式

@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;
}


哪种方法更有效以及何时使用哪种方法。

最佳答案

第二个连接可能效率更高,因为它需要的连接比第一个连接少。

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

这就是第二个是单向一对多关联的默认设置的原因。

10-08 10:54