多対多マッピングは、ソース・オブジェクトのコレクションとターゲット・オブジェクトのコレクションの間の関連を表します。これには、ソース・レコードとターゲット・レコードの間のアソシエーションを管理するための中間表の作成が必要です。図5-17には、Javaおよびリレーショナル・データベース表における多対多マッピングが示されています。
多対多マッピングはリレーション表を使用して実装されます。この表はソース表およびターゲット表の主キーの列を含みます。コンポジット主キーにはコンポジット・キーの各フィールドに対する列が必要です。多対多マッピングを使用する前に、中間表をデータベースで作成する必要があります。
ターゲット・クラスは、多対多マッピング用の動作を実装する必要はありません。ターゲット・クラスもソースに対して多対多マッピングを作成する場合、同じリレーション表を使用できますが、マッピングのうちの1つは読取り専用に設定する必要があります。両方のマッピングにより表への書込みが行われると、競合の原因となります。
多対多マッピングでは、デフォルトで、インダイレクションが有効になっており、属性がValueHolderInterface
タイプまたは透過コレクションを持っている必要があります。
次の図には、Javaおよびリレーショナル・データベース双方における多対多リレーションシップが示されています。
図5-17 多対多リレーションシップ
Copyright © 1997, 2006, Oracle. All rights reserved.