ホームページ >Java >&#&チュートリアル >双方向 ORM 関係における「所有側」とは何ですか? それがなぜ重要ですか?

双方向 ORM 関係における「所有側」とは何ですか? それがなぜ重要ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-27 08:45:10409ブラウズ

What is the

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

オブジェクト リレーショナル マッピング (ORM) では、エンティティ間の双方向の関係には次の概念が必要です。正しいデータベースを保証するための「所有者側」

所有側の定義

双方向関係の所有側とは、データベース内の外部キー制約を「所有」するエンティティを指します。これは、関係の更新が所有側を通じてのみ追跡および保持されることを意味します。

所有側の正当性

リレーショナル データベースは本質的に、外部キーを介した一方向の関係をサポートします。双方向の関係を実装するには、Hibernate などの ORM が追加の関連付けテーブルを作成するか、関係を表す結合テーブルを維持します。所有側の概念により、関係の一方の側だけが追跡および更新されることが保証され、潜在的なデータの不整合が防止されます。

マッピングの例

1 対多関係:

@Entity
public class Department {
    @OneToMany(mappedBy = "department")
    private List<Employee> employees;
}

@Entity
public class Employee {
    @ManyToOne
    private Department department;
}

この例では、Department が所有側です。これは、Employee テーブルのDepartment_id 外部キーを所有しているためです。部門の部門フィールドで従業員を追加または削除すると、従業員テーブルの外部キー参照が自動的に作成または削除されます。

1 対 1 の関係:

@Entity
public class Person {
    @OneToOne(mappedBy = "person")
    private Passport passport;
}

@Entity
public class Passport {
    @OneToOne
    private Person person;
}

この場合、所有側は明示的に指定されません。 Hibernate は、アノテーションの順序に基づいてそれを推測します。 person は最初に表示され、Passport テーブル内の person_id 外部キーを所有するため、所有側になります。

多対 1 関係:

@Entity
public class Cart {
    @OneToMany(mappedBy = "cart")
    private List<Product> products;
}

@Entity
public class Product {
    @ManyToOne
    private Cart cart;
}

と同様1 対多の例では、Cart は Product の cart_id 外部キーを所有しているため、所有側になります。 table.

結論

ORM マッピングで双方向の関係を効果的に管理するには、所有側の概念を理解することが重要です。データの整合性を確保し、不必要なデータベース テーブルやデータの重複を防ぎます。関係のどちら側が所有者側であるかを知ることで、開発者は不一致を回避し、アプリケーションとデータベースの両方でデータの一貫した表現を維持できます。

以上が双方向 ORM 関係における「所有側」とは何ですか? それがなぜ重要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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