Hibernate で多対多のマッピング関係を実装するには、@ManyToMany アノテーションを使用する方法、ユニオン テーブルを使用する方法、および関連付けテーブルを使用する方法の 3 つがあります。この例では、@ManyToMany アノテーションが使用され、EntityB のマッピングに関連付けられたフィールドを指定するために EntityA で mappedBy 属性が使用され、EntityA との多対多のマッピング関係を表すために EntityB で @ManyToMany アノテーションが使用されます。 。
#Hibernate の多対多マッピング関係処理メソッド
概要
Hibernate は、Java オブジェクトとリレーショナル データベース間のマッピングのためのオブジェクト リレーショナル マッピング (ORM) フレームワークです。多対多のマッピングは、1 つのエンティティを複数のエンティティに関連付けたり、その逆を行うことができる関係の一種です。多対多マッピングの実装
Hibernate では、@ManyToMany アノテーションを使用して多対多マッピングを実現できます。以下に示すように:
// EntityA.java @Entity public class EntityA { @Id private Long id; @ManyToMany(mappedBy = "entitiesA") private Set<EntityB> entitiesB; } // EntityB.java @Entity public class EntityB { @Id private Long id; @ManyToMany private Set<EntityA> entitiesA; }
entitiesB フィールドは、EntityA に関連付けられた EntityB のコレクションを表します。
mappedBy 属性は、このマップに関連付けられた EntityB 内のフィールドを指定します。 EntityB では、
entitiesA フィールドは、EntityB に関連付けられた EntityA のコレクションを表します。
実践例
質問: 学生と家庭教師のシステムがあると仮定します。各生徒に複数の講師を付けることができ、各講師が複数の生徒を教えることができます。この関係を表すように Hibernate マッピングを設計します。
解決策:
// Student.java @Entity public class Student { @Id private Long id; private String name; @ManyToMany(mappedBy = "students") private Set<Tutor> tutors; } // Tutor.java @Entity public class Tutor { @Id private Long id; private String name; @ManyToMany private Set<Student> students; }
注:
エンティティでは、
tutors フィールドは、生徒に関連付けられた講師のコレクションを表します。
mappedBy 属性は、このマップに関連付けられた
Tutor エンティティ内のフィールドを指定します。
エンティティの
students フィールドは、講師に関連付けられた生徒のコレクションを表します。
以上がHibernate は多対多のマッピング関係をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。