Maison  >  Article  >  Java  >  Qu'est-ce que le « côté propriétaire » dans les relations ORM bidirectionnelles et pourquoi est-il important ?

Qu'est-ce que le « côté propriétaire » dans les relations ORM bidirectionnelles et pourquoi est-il important ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-27 08:45:10393parcourir

What is the

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

Dans le mappage objet-relationnel (ORM), les relations bidirectionnelles entre entités nécessitent le concept de un "côté propriétaire" pour garantir un comportement correct de la base de données.

Définir le propriétaire Côté

Le côté propriétaire d'une relation bidirectionnelle fait référence à l'entité qui « possède » la contrainte de clé étrangère dans la base de données. Cela signifie que les mises à jour de la relation ne sont suivies et conservées que par le côté propriétaire.

Justification du côté propriétaire

Les bases de données relationnelles prennent intrinsèquement en charge les relations unidirectionnelles via des clés étrangères. Pour implémenter des relations bidirectionnelles, les ORM comme Hibernate créent des tables d'association supplémentaires ou maintiennent une table de jointure pour représenter la relation. Le concept de côté propriétaire garantit qu'un seul côté de la relation est suivi et mis à jour, évitant ainsi les incohérences potentielles des données.

Exemples de mappages

Un à plusieurs Relation :

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

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

Dans cet exemple, Department est le côté propriétaire car il possède le Department_id clé étrangère dans la table Employee. L'ajout ou la suppression d'un employé du champ département dans Département créera ou supprimera automatiquement la référence de clé étrangère dans la table Employé.

Relation individuelle :

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

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

Dans ce cas, le côté propriétaire n'est pas explicitement spécifié. Hibernate le déduit en fonction de l'ordre des annotations. La personne devient le côté propriétaire car elle apparaît en premier et possède la clé étrangère person_id dans la table Passport.

Relation plusieurs-à-un :

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

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

Similaire à dans l'exemple One-to-Many, Cart est le côté propriétaire car il possède la clé étrangère cart_id dans le produit table.

Conclusion

Comprendre le concept de côté propriétaire est crucial pour gérer efficacement les relations bidirectionnelles dans les mappages ORM. Il garantit l’intégrité des données et évite les tables de base de données inutiles et la duplication de données. En sachant quel côté de la relation est le côté propriétaire, les développeurs peuvent éviter les incohérences et maintenir une représentation cohérente des données dans l'application et dans la base de 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!

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