NHibernateドキュメント翻訳第6章関連マッピング

1935 ワード

第6章関連マッピング
目次
概要
たんほうこうかんけい
マルチペア(many to one)
1対1(one to one)
1対多(one to many)
テーブル接続の一方向関連付けの使用
1対多(one to many)
マルチペア(many to one)
1対1(one to one)
マルチペアマルチ
双方向関連
1対多(one to many)/多対一(many to one)
1対1(one to one)
テーブル接続の双方向関連付けの使用
1対多(one to many)/多対一(many to one)
1対1(one to one)
マルチペアマルチ
概要
一方的な関連付けは最もよく使われ、最も正しく使用しにくい.この章では、一方向マッピングから始め、双方向のケースについて説明します.私たちはすべての例でPersonAddressを使用します.例にはネーミングスペースやプログラムセットは含まれていませんが、重要な点に注目します.
テーブル接続と多様性(一方向または双方向)を使用して分類するかどうかで関連付けます.
従来のデータモデルでは空の外部キーを許可することは実用的ではないので、私たちの例では空の外部キーを許可することはありません.NHibernateでは必須ではありません.空の値の制約を削除すると、マッピングは通常通り動作します.
たんほうこうかんけい
マルチペア(many to one)
1対1(one to one)
1対多(one to many)
テーブル接続の一方向関連付けの使用
1対多(one to many)
マルチペア(many to one)
1対1(one to one)
マルチペアマルチ
双方向関連
1対多(one to many)/多対一(many to one)
双方向の一対のマルチ(one-to-many)関連は通常の関連タイプです.(これは標準的なparent/child関係です.)
<class name="Person">

 <id name="Id" column="personId">

  <generator class="native" />

 </id>

 <many-to-one name="Address"

  column="addressId"

  not-null="true"

 />

</class>

<class name="Address">

 <id name="Id" column="addressId">

  <generator class="native" />

 </id>

 <set name="People" inverse="true">

  <key column="addressId" />

  <one-to-many class="Person" />

 </set>

</class>
create table Person 

(

 personId bigint not null primary key,

 addressId bigint not null

)

create table Address

(

 addressId bigint not null primary key

)

 

1対1(one to one)
テーブル接続の双方向関連付けの使用
1対多(one to many)/多対一(many to one)
1対1(one to one)
マルチペアマルチ