我正在使用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;
}
哪个更有效,何时使用哪种方法。
答案 0 :(得分:0)
第二个可能更高效,因为它需要一个小于第一个的连接。
但它通过在地址表中要求外键将多方(地址)耦合到一方(人)。这与关联是单向的事实相矛盾(地址不知道对象模型中的人)。
这就是为什么第二个是单向一对多关联的默认值。