Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
単方向のリレーションシップには,Single-ValuedリレーションシップとMulti-Valuedリレーションシップがあります。それぞれのリレーションシップについて説明します。
- 単方向のSingle-Valuedリレーションシップ
単方向のSingle-Valuedリレーションシップとは,単体のインスタンスを参照し,所有者だけが存在するリレーションシップのことです。
単方向Single-Valuedリレーションシップには,単方向のOneToOneリレーションシップと単方向のManyToOneリレーションシップがあります。
- 単方向のMulti-Valuedリレーションシップ
単方向のMulti-Valuedリレーションシップとは,コレクションの形でエンティティを参照し,所有者だけが存在するリレーションシップのことです。
単方向Multi-Valuedリレーションシップには,単方向のOneToManyリレーションシップと単方向のManyToManyリレーションシップがあります。
ここでは,単方向のリレーションシップのデフォルトマッピングについて説明します。
- <この項の構成>
- (1) 単方向のSingle-Valuedリレーションシップ
- (2) 単方向のMulti-Valuedリレーションシップ
単方向のOneToOneリレーションシップと単方向のManyToOneリレーションシップのデフォルトマッピングについて説明します。
次に示す条件の場合に適用される単方向のOneToOneリレーションシップのデフォルトマッピングについて説明します。
- 条件
- エンティティAは,エンティティBの単体のインスタンスを参照して,@OneToOne(または,O/Rマッピングファイルで該当するXMLタグ)を設定します。
- エンティティBからは,エンティティAを参照しません。
- エンティティAがリレーションシップの所有者となります。
- 適用されるデフォルトマッピング
- エンティティAは,テーブルAにマップされます。
- エンティティBは,テーブルBにマップされます。
- テーブルAは,テーブルBに対する外部キーを持つ必要があります。外部キー列の名前は,次のようになります。
外部キー列の名前
エンティティAのリレーションシップのプロパティ(または,フィールド)の名前_テーブルBのプライマリキー列の名前
注 斜体は可変値を表します。
- 外部キー列は,テーブルBのプライマリキーと同じ型を持ち,ユニークキー制約です。
図6-9 単方向のOneToOneでのデフォルトマッピング
次に示す条件の場合に適用される単方向のManyToOneリレーションシップのデフォルトマッピングについて説明します。
- 条件
- エンティティAは,エンティティBの単体のインスタンスを参照し,@ManyToOne(または,O/Rマッピングファイルで該当するXMLタグ)を設定します。
- エンティティBからは,エンティティAを参照しません。
- 適用されるデフォルトマッピング
- エンティティAは,テーブルAにマップされます。
- エンティティBは,テーブルBにマップされます。
- テーブルAは,テーブルBに対する外部キーを持つ必要があります。外部キー列の名前は,次のようになります。
外部キー列の名前
エンティティAのリレーションシップのプロパティ(またはフィールド)の名前_テーブルBのプライマリキー列の名前
注 斜体は可変値を表します。
- 外部キー列は,テーブルBのプライマリキーと同じ型を持つ必要があります。
図6-10 単方向のManyToOneでのデフォルトマッピング
単方向のOneToManyリレーションシップと単方向のManyToManyリレーションシップのデフォルトマッピングについて説明します。
次に示す条件の場合に適用される単方向のOneToManyリレーションシップのデフォルトマッピングについて説明します。
- 条件
- エンティティAは,エンティティBのコレクションを参照します。コレクションに@OneToMany(または,O/Rマッピングファイルで該当するXMLタグ)を設定します。
- エンティティBからは,エンティティAを参照しません。
- エンティティAがリレーションシップの所有者です。
- 適用されるデフォルトマッピング
- エンティティAは,テーブルAにマップされます。
- エンティティBは,テーブルBにマップされます。
- テーブルA,Bのほかに,所有者側のテーブルの名前が最初にくるA_Bという名前の結合表が必要となります。この結合表は,二つの外部キー列を持ちます。
一つ目の外部キー列は,テーブルAを参照し,テーブルAのプライマリキーと同じ型を持ちます。この外部キー列の名前は,次のようになります。
外部キー列の名前
エンティティAの名前_テーブルAのプライマリキー列の名前
また,もう一つの外部キー列は,テーブルBを参照し,テーブルBの外部キーと同じ型を持ち,ユニークキー制約があります。この外部キー列の名前は,次のようになります。
外部キー列の名前
エンティティAのリレーションシッププロパティ(またはフィールド)の名前_テーブルBのプライマリキー列の名前
注 斜体は可変値を表します。
- 注意
- この例のような結合表を使用した単方向のOneToManyリレーションシップは,CJPAプロバイダ以外のJPAプロバイダではサポートされていない可能性があります。単方向のOneToManyリレーションシップで作成したアプリケーションをCJPAプロバイダ以外のJPAプロバイダで動作させる場合は注意してください。
図6-11 単方向OneToManyでのデフォルトマッピング
次に示す条件の場合に適用される単方向のManyToManyリレーションシップのデフォルトマッピングについて説明します。
- 条件
- エンティティAは,エンティティBのコレクションを参照します。コレクションに@ManyToMany(または,O/Rマッピングファイルで該当するXMLタグ)を設定します。
- エンティティBは,エンティティAを参照しません。
- 所有者はエンティティAです。
- 適用されるデフォルトマッピング
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.