Maison  >  Article  >  Java  >  Comment « MappedBy » dans JPA et Hibernate empêche-t-il les incohérences de données dans les relations bidirectionnelles ?

Comment « MappedBy » dans JPA et Hibernate empêche-t-il les incohérences de données dans les relations bidirectionnelles ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 12:14:30656parcourir

How Does `MappedBy` in JPA and Hibernate Prevent Data Inconsistencies in Bi-directional Relationships?

Comprendre MappedBy dans JPA et Hibernate

Dans le mappage objet-relationnel (ORM), les relations bidirectionnelles entre entités nécessitent une gestion minutieuse pour éviter des boucles infinies ou des états de données incohérents . MappedBy est un attribut dans les annotations JPA et Hibernate qui résout ce problème.

Comprendre le rôle de MappedBy :

MappedBy spécifie quelle entité possède la relation et possède la clé étrangère colonne dans la base de données. Il est appliqué à l'annotation de mappage de l'entité non propriétaire, indiquant que la relation est mappée par la clé étrangère dans la table de l'entité propriétaire.

Recommandations d'utilisation :

Quand définissant une relation bidirectionnelle, il est recommandé de suivre ces directives :

  • Identifier l'entité propriétaire.
  • Ajouter l'annotation @JoinColumn au mappage de l'entité propriétaire, en spécifiant la clé étrangère column.
  • Ajoutez l'annotation @JoinTable si vous avez besoin d'une table de jointure entre les entités.
  • Appliquez l'annotation @MappedBy au mappage de l'entité non propriétaire, en faisant référence au nom du champ de mappage de l'entité propriétaire.

Exemple :

Dans vos entités Airline et AirlineFlight, Airline doit être le propriétaire de la relation. Les annotations correctes seraient :

<code class="java">// Airline.java
@OneToMany(mappedBy = "airline")
public Set<AirlineFlight> getAirlineFlights() { return airlineFlights; }

// AirlineFlight.java
@ManyToOne
@JoinColumn(name = "IDAIRLINE")
public Airline getAirline() { return airline; }</code>

Objectif de MappedBy :

MappedBy sert deux objectifs principaux :

  • Spécifie l'entité propriétaire dans une relation bidirectionnelle, empêchant la duplication de clé étrangère.
  • Permet de parcourir la relation depuis l'une ou l'autre entité sans créer de boucle récursive ou d'autres problèmes d'incohérence 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!

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