ホームページ >Java >&#&チュートリアル >オブジェクト リレーショナル マッピング (ORM) の「所有側」とは何ですか?

オブジェクト リレーショナル マッピング (ORM) の「所有側」とは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-20 02:37:01834ブラウズ

What is the

ORM マッピングの「所有側」を理解する

オブジェクト リレーショナル マッピング (ORM) では、「所有側」の概念は次のことを指します。データベース内の外部キー関係を管理するエンティティに。これは、オブジェクト指向プログラミングとは異なり、リレーショナル データベースが本質的に双方向の関係をサポートしていないために発生します。

所有側の必要性

ORM では、所有側は以下の責任を負います。関係内の他のエンティティを表す外部キーを所有することにより、関係の整合性を維持します。所有側がないと、リレーションシップの各サイドに外部キーが必要となり、不必要な関連付けテーブルとデータ重複の可能性が生じます。

さまざまなリレーションシップ タイプでの所有権

  • 1 対多: 通常、所有側には子テーブルに外部キーが含まれており、複数の子を 1 つの親に関連付けることができます。
  • 1 対-One: 1 対多と同様に、所有側は外部キーを保持しますが、非所有側は、mappedBy 属性を使用して関係を示します。
  • 多対- 1: 所有側が外部キーを保持し、複数のエンティティが単一の親を参照できるようにします。

例: 所有側との 1 対多マッピング

次の Java の例を考えてみましょう:

@Entity
public class Person {
    @Id
    private Long id;
    @OneToMany(mappedBy = "person")
    private List<IdDocument> idDocuments;
}

@Entity
public class IdDocument {
    @Id
    private Long id;
    @ManyToOne
    private Person person;
}

この例では、IdDocument テーブルを参照する外部キーが含まれているため、Person が所有側になります。 IdDocument の mappedBy 属性は、関係が所有側によって管理されていることを示します。

mappedBy を使用する場合の影響

非所有側で mappedBy を使用すると、次の責任が移されます。所有者側との関係を管理します。これは、次のことを意味します。

  • 外部キーの更新は、所有側 (例: idDocument.setperson(person)) でのみ実行する必要があります。
  • Hibernate は、関係の変更を追跡しません。非所有側 (例: person.getIdDocuments().add(idDocument)).

以上がオブジェクト リレーショナル マッピング (ORM) の「所有側」とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。