1

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

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

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

4

1 回答 1

0

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

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

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

于 2013-07-01T21:09:05.367 回答