"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment « MappedBy » facilite-t-il les relations bidirectionnelles dans JPA et Hibernate ?

Comment « MappedBy » facilite-t-il les relations bidirectionnelles dans JPA et Hibernate ?

Publié le 2024-11-17
Parcourir:242

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

Comprendre MappedBy dans JPA et Hibernate

Dans les frameworks de mappage objet-relationnel (ORM) comme JPA et Hibernate, MappedBy est une annotation utile pour établir des relations bidirectionnelles entre les classes d'entités. Cette annotation est utilisée dans le contexte de relations un-à-plusieurs et plusieurs-à-un.

Utilisation recommandée

L'utilisation recommandée de MappedBy est la suivante :

  • Relations un-à-plusieurs : Dans une relation un-à-plusieurs, le côté « plusieurs » de la relation (le côté avec une collection) doit avoir l'annotation MappedBy. Cette annotation spécifie le nom du champ du côté « un » de la relation qui contient la contrainte de clé étrangère.
  • Relations plusieurs-à-un : Dans une relation plusieurs-à-un relation, le côté "un" de la relation (le côté avec un seul objet de référence) doit avoir l'annotation MappedBy. Cette annotation spécifie le nom du champ du côté « plusieurs » de la relation qui contient la contrainte de clé étrangère.

Objectif de MappedBy

MappedBy sert plusieurs objectifs :

  • Traversée bidirectionnelle : Dans les relations bidirectionnelles, MappedBy vous permet de parcourir la relation dans les deux sens sans avoir besoin de définitions de clés étrangères explicites dans les deux tables.
  • Optimisation : En spécifiant la propriété de la relation, MappedBy peut optimiser les performances de la base de données en évitant les tables de jointure ou les clés étrangères inutiles. contraintes.

Exemple

Dans l'exemple fourni, la compagnie aérienne possédant de nombreux AirlineFlights et AirlineFlights appartenant à une compagnie aérienne, MappedBy doit être utilisé dans la classe AirlineFlight comme suit :

@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}

Dans cet exemple, l'annotation @MapsId indique que le champ IDAIRLINE dans AirlineFlight est utilisé comme contrainte de clé étrangère pour l'entité Airline. En utilisant MappedBy ici, vous pouvez établir une relation bidirectionnelle entre Airline et AirlineFlight sans avoir besoin de contraintes de clé étrangère dans les deux tables.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3