Comprendre le « côté propriétaire » dans les mappages ORM
Dans le domaine du mappage objet-relationnel (ORM), les relations bidirectionnelles entre les entités peuvent posent un défi en raison de la nature unidirectionnelle des bases de données relationnelles. Pour résoudre ce problème, les ORM introduisent le concept de « côté propriétaire », qui sert à rationaliser la persistance des données et à maintenir l'intégrité référentielle.
Définition du côté propriétaire
Dans un Mappage ORM, le côté propriétaire fait référence à l'entité qui gère la relation de clé étrangère au sein de la base de données. Autrement dit, le côté propriétaire est responsable du suivi et de la maintenance des modifications apportées à la clé étrangère dans la table associée.
Explication avec des exemples de mappage
Considérez les scénarios de mappage suivants :
Un à plusieurs : Dans un relation un-à-plusieurs, le côté propriétaire contient généralement la collection d’entités liées. Par exemple, dans le mappage entre une entité Person et une collection d'entités IdDocument, l'entité Person serait considérée comme le côté propriétaire.
@Entity public class Person { @OneToMany(mappedBy="person") private List<IdDocument> idDocuments; } @Entity public class IdDocument { @ManyToOne private Person person; }
One-to-One : Semblable à la relation un-à-plusieurs, dans un mappage un-à-un, le côté propriétaire contient généralement la référence à l'entité associée. Dans ce cas, puisque la relation est unique, l'une ou l'autre entité peut être désignée comme partie propriétaire.
@Entity public class Person { @OneToOne(mappedBy="person") private IdDocument idDocument; } @Entity public class IdDocument { @OneToOne private Person person; }
Plusieurs-à-Un : Dans plusieurs -à un mappage, le côté propriétaire contient généralement la clé étrangère de l'entité associée. Considérons un mappage entre une collection d’entités Étudiant et une entité École. L'entité Étudiant serait le côté propriétaire, contenant une référence à l'entité École.
@Entity public class Student { @ManyToOne private School school; } @Entity public class School { @OneToMany(mappedBy="school") private List<Student> students; }
Conséquences du mappage sans côté propriétaire
Si le côté propriétaire n'est pas explicitement déclaré dans une relation bidirectionnelle, Hibernate créera une troisième table d'association pour faciliter le mappage. Cela peut conduire à une prolifération de tables inutiles et avoir un impact sur les performances de la base de données.
Conclusion
Comprendre le concept de côté propriétaire est crucial pour un mappage ORM efficace. En désignant correctement le côté propriétaire, les développeurs peuvent garantir une persistance efficace des données et éviter d'éventuels problèmes d'intégrité des données.
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!