3 番目のエンティティによって 2 つのクラスのオブジェクト間の関連付けが定義される場合に、間接関連付けが発生します。 たとえば、他の 2 つのデータベース テーブルを 1 つにバインドする中間のテーブルが該当します。
間接関連付けでは、関連付けはオブジェクトの 1 つ上のプロパティとしてではなく、独立したエンティティとして格納されます。
たとえば、メンバシップ テーブルなどの個別のアカウントとグループの間の関連付けを識別する中間のテーブルがある場合、アカウント オブジェクトとグループ オブジェクトの間に間接関連付けが存在します。
直接関連付けでは、オブジェクトには別のオブジェクトを直接ポイントする属性が割り当てられます。 ただし、間接関連付けで、関連するオブジェクトには両方とも互いにではなくメンバシップ テーブルをポイントする属性があります。
メンバシップ テーブルによって、各グループのメンバが定義されます。 テーブルには関連する個別のアカウントおよびグループを識別する関連付けマッピング(アカウントが属するグループなど)、および各グループに属するアカウントのリストが含まれます。 メンバシップ テーブルでは、オブジェクト間の関連付けは複数対複数のマッピング テーブルに格納されます。
メンバシップ テーブルを使用すると、アカウントとグループ オブジェクトの間の関連付けのルックアップ テーブルを個別に指定して、関連する属性をマッピングできます。
間接関連付けを定義するには、両方の関連付けオブジェクトへの参照が含まれるメンバシップ テーブルを指定します。
2 つのオブジェクト間に間接関連付けを作成すると、Connector Xpress によって逆の関連付けが自動的に作成されます。つまり、間接関連付けは基本的に双方向定義になります。
注: 間接関連付けは、JDBC マッピングでのみ作成できます。
例: 間接関連付け
以下の図では、メンバシップ テーブルを使用して、従業員クラスと部門クラスの間にマッピングされた間接関連付けを示します。 以下にスキーマとデータベースの例を示します。

データベースには以下の 3 つのテーブルがあります。
仮想属性 memberOf には、従業員がメンバである部門の Group ID が含まれます。
仮想属性メンバには、部門に属する従業員のリストである Account ID が含まれています。
|
Copyright © 2014 CA.
All rights reserved.
|
|