1

休止状態を使用してサンプル アプリケーションを開発しています。非常にスムーズに進んでいますが、1対多の関係に関する小さなクエリが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;
}

どちらがより効率的で、いつどの方法を使用するか。

4

1 に答える 1

0

2 番目の方法は、最初の方法よりも必要な結合が 1 つ少ないため、おそらくもう少し効率的です。

しかし、アドレステーブルに外部キーを要求することで、多面 (アドレス) を一面 (人) に結合します。これは、関連付けが一方向であるという事実と矛盾しています (アドレスは、オブジェクト モデル内の人物を認識していません)。

これが、2 番目のものが一方向の 1 対多の関連付けのデフォルトである理由です。

于 2013-07-01T21:09:05.367 に答える