Maison >Java >javaDidacticiel >Qu'est-ce que le « côté propriétaire » dans le mappage objet-relationnel (ORM) ?

Qu'est-ce que le « côté propriétaire » dans le mappage objet-relationnel (ORM) ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 02:37:01834parcourir

What is the

Comprendre le « côté propriétaire » dans le mappage ORM

Dans le mappage objet-relationnel (ORM), le concept de « côté propriétaire » fait référence à l'entité qui gère la relation de clé étrangère dans une base de données. Cela est dû au fait que les bases de données relationnelles ne prennent pas automatiquement en charge les relations bidirectionnelles, contrairement à la programmation orientée objet.

Nécessité d'un côté propriétaire

Dans ORM, le côté propriétaire est responsable de maintenir l’intégrité d’une relation en possédant la clé étrangère qui représente l’autre entité dans la relation. Sans côté propriétaire, chaque côté de la relation nécessiterait une clé étrangère, ce qui entraînerait des tables d'association inutiles et une duplication potentielle des données.

Propriété dans différents types de relations

  • Un-à-Many : Le côté propriétaire contient généralement la clé étrangère dans la table enfant, permettant à plusieurs enfants d'être associés à un seul parent.
  • Un-à-Un : Semblable à un-à-plusieurs, le côté propriétaire détient la clé étrangère, tandis que le côté non-propriétaire utilise l'attribut mappedBy pour indiquer la relation .
  • Many-to-One : Le côté propriétaire détient la clé étrangère, permettant à plusieurs entités de référencer une seule parent.

Exemple : mappage un-à-plusieurs avec côté propriétaire

Considérons l'exemple Java suivant :

@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;
}

Dans Dans cet exemple, Person est le côté propriétaire, car il contient la clé étrangère qui fait référence à la table IdDocument. L'attribut mappedBy dans IdDocument indique que la relation est gérée par le côté propriétaire.

Implications de l'utilisation de mappedBy

L'utilisation de mappedBy du côté non propriétaire déplace la responsabilité de gérer la relation avec le côté propriétaire. Cela signifie :

  • Les mises à jour des clés étrangères doivent être effectuées uniquement du côté propriétaire (par exemple, idDocument.setPerson(person)).
  • Hibernate ne suivra pas les modifications apportées à la relation sur le côté non propriétaire (par exemple, person.getIdDocuments().add(idDocument)).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn