ORM マッピングの「所有側」を理解する
オブジェクト リレーショナル マッピング (ORM) の領域では、エンティティ間の双方向の関係を次のことができます。リレーショナル データベースの一方向性の性質により、課題が生じます。これに対処するために、ORM は「所有側」の概念を導入し、データの永続性を合理化し、参照整合性を維持します。
所有側の定義
ORM マッピング。所有側は、データベース内の外部キー関係を管理するエンティティを指します。つまり、所有側は、関連テーブル内の外部キーへの変更を追跡および維持する責任があります。
マッピング例による説明
次のマッピング シナリオを考えてみましょう。
1 対多: 1 対多の関係では、通常、所有者側には関連するエンティティのコレクションが含まれます。たとえば、Person エンティティと IdDocument エンティティのコレクション間のマッピングでは、person エンティティが所有側とみなされます。
@Entity public class Person { @OneToMany(mappedBy="person") private List<IdDocument> idDocuments; } @Entity public class IdDocument { @ManyToOne private Person person; }
1 対 1 : 1 対多の関係と同様に、1 対 1 マッピングでは、通常、所有側に関連エンティティへの参照が含まれます。この場合、関係は一意であるため、どちらのエンティティも所有側として指定できます。
@Entity public class Person { @OneToOne(mappedBy="person") private IdDocument idDocument; } @Entity public class IdDocument { @OneToOne private Person person; }
多対一:対 1 マッピングの場合、通常、所有側には関連エンティティへの外部キーが含まれます。 Student エンティティのコレクションと School エンティティの間のマッピングを考えてみましょう。 Student エンティティは、School エンティティへの参照を含む所有側になります。
@Entity public class Student { @ManyToOne private School school; } @Entity public class School { @OneToMany(mappedBy="school") private List<Student> students; }
所有側なしのマッピングの結果
所有側が双方向関係で明示的に宣言されていない場合、Hibernate はマッピングを容易にするために 3 番目の関連付けテーブルを作成します。これにより、不要なテーブルが急増し、データベースのパフォーマンスに影響を与える可能性があります。
結論
効果的な ORM マッピングには、所有側の概念を理解することが重要です。所有者側を正しく指定することで、開発者は効率的なデータの永続性を確保し、潜在的なデータ整合性の問題を回避できます。
以上がORM の双方向関係における「所有側」とは何ですか?また、それが重要である理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。