1.2.5. 双方向関連

次に双方向関連をマッピングします。 Java で両側から人物とイベントを関連付けします。 データベーススキーマは変わらないため、 多対多の多重度が維持されます。

注記

リレーショナルデータベースはネットワークプログラミング言語よりも柔軟性があり、ナビゲーションの方向が必要ありません。そのため、可能な方向でデータの閲覧や読み出しが可能です。
最初に Event クラスに参加者のコレクションを追加します。
    private Set participants = new HashSet();

    public Set getParticipants() {
        return participants;
    }

    public void setParticipants(Set participants) {
        this.participants = participants;
    }
Event.hbm.xml でこちら側の関連をマップします。
<set name="participants" table="PERSON_EVENT" inverse="true">
  <key column="EVENT_ID"/>
  <many-to-many column="PERSON_ID" class="org.hibernate.tutorial.domain.Person"/>
</set>
これらは両マッピングドキュメントの普通の set マッピングになります。keymany-to-many のカラム名が、 両方のマッピングドキュメントで入れ替えられていることに注目してください。ここで最も重要な追加項目は、Event のコレクションマッピングの set 要素にある inverse="true" 属性です。
これは、 2 つエンティティの関連に関する情報が必要な場合に、Hibernate は逆側の Person クラスを確認するべきであることを意味しています。 2 つのエンティティ間の双方向リンクがどのように作成されたか確認すると、 理解しやすいはずです。