2013-07-01 62 views
1

我正在開發一個使用休眠的示例應用程序。它很順利,但我有一個關於一對多關係的小查詢。 我看到有2種不同的指定的關係的方式一對多關係不同的選項

@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

第二個可能效率更高一些,因爲它需要一個連接少於第一個連接。

但它通過在地址表中要求一個外鍵將多邊(地址)耦合到一邊(人)。這與協會是單向的(地址不知道它在對象模型中的人)的事實相矛盾。

這就是爲什麼第二個是單向一對多關聯的默認值。