32

このドキュメントの内容([単方向]セクションまでスクロールダウン):

http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-association-collections

所有エンティティで外部キー列を使用するよりも、結合テーブルとの単方向の1対多の関連付けの方がはるかに好ましいと言われています。私の質問は、なぜそれが非常に好まれるのかということです。

4

2 に答える 2

38

所有されているエンティティタイプが別の親エンティティタイプによっても所有されている可能性がある状況を考えてみます。所有するテーブルの両方の親テーブルへの外部キー参照を配置しますか?3つの親タイプがある場合はどうなりますか?大きなデザインには対応していません。

結合テーブルは結合を切り離すため、所有されているテーブルは親テーブルを認識せず、デザインをエレガントにスケーリングできます。

于 2009-08-20T16:05:57.893 に答える
11

子エンティティに親タイプが1つしかない場合は、結合テーブルは必要ありません。私はこれをJPAで行いました(休止状態の実装を使用)。

利点:テーブルが1つ少なくなります。おそらくより良いパフォーマンス。いいえ「このテーブルは何のためにあるのですか?」質問を入力します。

短所:OOの観点からは、子と親の間に追加の依存関係が導入されます。実際には、これはおそらくそれほど大したことではありません。なぜなら、関係は子供にとってプライベートだからです。

例えば
親:
@OneToMany(mappedBy = "parent"、cascade = CascadeType.ALL)
@MapKey(name = "name")
プライベートマップの子供;

子:
@ManyToOne(オプション= false)
プライベート親親;
于 2009-08-20T16:21:30.233 に答える