Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)

[目次][用語][索引][前へ][次へ]

6.6.4 デフォルトマッピング(双方向のリレーションシップ)

ここでは,双方向のリレーションシップのデフォルトマッピングについて説明します。

<この項の構成>
(1) 双方向のOneToOneリレーションシップ
(2) 双方向のManyToOne/OneToManyリレーションシップ
(3) 双方向のManyToManyリレーションシップ

(1) 双方向のOneToOneリレーションシップ

次に示す条件の場合に適用される双方向のOneToOneリレーションシップのデフォルトマッピングについて説明します。

条件
  • エンティティAはエンティティBの単体のインスタンスを参照して,@OneToOneを設定します。
  • エンティティBはエンティティAの単体のインスタンスを参照して,@OneToOneを設定します。@OneToOneのmappedBy属性にエンティティAでエンティティBを参照する永続化プロパティ(またはフィールド)名を指定します。
  • エンティティAは,リレーションシップの所有者です。

適用されるデフォルトマッピング
  • エンティティAは,テーブルAにマップされます。
  • エンティティBは,テーブルBにマップされます。
  • テーブルAは,テーブルBの外部キーを持つ必要があります。なお,外部キー列の名前は,次のようになります。
    外部キー列の名前
    エンティティAのリレーションシッププロパティ(またはフィールド)の名前_テーブルBのプライマリキー列の名前
    注 斜体は可変値を表します。
また,外部キー列は,テーブルBのプライマリキーと同じ型を持ち,ユニークキー制約があります。

図6-6 双方向のOneToOneでのデフォルトマッピング

[図データ]

(2) 双方向のManyToOne/OneToManyリレーションシップ

次に示す条件の場合に適用される双方向のManyToOne/OneToManyリレーションシップのデフォルトマッピングについて説明します。

条件
  • エンティティAはエンティティBの単体のインスタンスを参照して,@ManyToOne(または,O/Rマッピングファイルの該当するXMLタグ)を設定します。
  • エンティティBは,エンティティAのコレクションを参照して,@OneToMany(または,O/Rマッピングファイルの該当するXMLタグ)を設定します。@OneToManyにはmappedBy属性を指定します。mappedBy属性は,エンティティAで,エンティティBを参照するために設定した永続プロパティ(またはフィールド)名を指定します。
  • エンティティAは,リレーションシップの所有者です。

適用されるデフォルトマッピング
  • エンティティAはテーブルAにマップされます。
  • エンティティBはテーブルBにマップされます。
  • テーブルAは,テーブルBに対する外部キーを持つ必要があります。外部キー列の名前は,次のようになります。
    外部キー列の名前
    エンティティAのリレーションシッププロパティ(またはフィールド)の名前_テーブルBのプライマリキー列の名前
    注 斜体は可変値を表します。
外部キー列はテーブルBのプライマリキーと同じ型を持ちます。

図6-7 双方向のManyToOne/OneToManyでのデフォルトマッピング

[図データ]

(3) 双方向のManyToManyリレーションシップ

次に示す条件の場合に適用される双方向のManyToManyリレーションシップのデフォルトマッピングについて説明します。

条件
  • エンティティAは,エンティティBのコレクションを参照します。コレクションには,@ManyToMany(または,O/Rマッピングファイルで該当するXML要素)を設定します。
  • エンティティBは,エンティティAのコレクションを参照します。コレクションには,@ManyToMany(または,O/Rマッピングファイルで該当するXMLタグ)を設定して,mappedBy属性を指定します。mappedBy属性には,エンティティAで,エンティティBを参照するために設定した永続化プロパティ(またはフィールド)名を指定します。
  • エンティティAは,リレーションシップの所有者側です。

適用されるデフォルトマッピング
  • エンティティAは,テーブルAにマップされます。
  • エンティティBは,テーブルBにマップされます。
  • テーブルA,Bのほかに,所有者側のテーブルの名前が最初にくるA_Bという名前の結合表が必要です。この結合表は,二つの外部キー列を持ちます。
    一つ目の外部キー列はテーブルAを参照し,テーブルAのプライマリキーと同じ型を持ちます。この外部キー列の名前は,次のようになります。
    外部キー列の名前
    エンティティBのリレーションシップのプロパティ(またはフィールド)の名前_テーブルAのプライマリキーの名前
    また,もう一つの外部キー列は,テーブルBを参照し,テーブルBのプライマリキーと同じ型を持ちます。この外部キー列の名前は,次のようになります。
    外部キー列の名前
    エンティティAのリレーションシップのプロパティ(またはフィールド)の名前_テーブルBのプライマリキーの名前
    注 斜体は可変値を表します。

    図6-8 双方向ManyToManyでのデフォルトマッピング

    [図データ]