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