Heim  >  Artikel  >  Java  >  Welche Rolle spielt „mappedBy“ in JPA und Hibernate für die Verwaltung bidirektionaler Beziehungen?

Welche Rolle spielt „mappedBy“ in JPA und Hibernate für die Verwaltung bidirektionaler Beziehungen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 04:45:02425Durchsuche

What is the role of `mappedBy` in JPA and Hibernate for managing bi-directional relationships?

MappedBy in JPA und Hibernate verstehen

In Java Persistence API (JPA) und Hibernate ist mappedBy eine wichtige Annotation, die die Verwaltung von erleichtert bidirektionale Beziehungen zwischen Entitäten. Es dient zwei Hauptzwecken:

1. Zeigt die umgekehrte Seite einer Beziehung an:

mappedBy identifiziert die Entität, die nicht Eigentümer der Beziehung ist. Es gibt an, welche Eigenschaft in dieser Entität für den Zugriff auf das zugehörige Attribut verwendet werden soll. Dies ist besonders nützlich in bidirektionalen Beziehungen, in denen beide Entitäten aufeinander verweisen.

2. Beseitigung von Fremdschlüsselbeschränkungen:

Im Gegensatz zum herkömmlichen Ansatz zum Erstellen von Fremdschlüsselbeziehungen können Sie mit mappedBy die Beziehung definieren, ohne physisch eine Fremdschlüsselspalte hinzuzufügen. Stattdessen nutzt es die Existenz eines vorhandenen Fremdschlüssels für die andere Entität.

Verwendung von „mappedBy“ in bidirektionalen Beziehungen:

Um die Verwendung von „mappedBy“ zu veranschaulichen, betrachten Sie Folgendes das bereitgestellte Beispiel:

Airline.java:

<code class="java">@Entity
@Table(name="Airline")
public class Airline {
    // ... Other fields ...
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "IDAIRLINE")
    private Set<AirlineFlight> airlineFlights;
}</code>

AirlineFlight.java:

<code class="java">@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... Other fields ...
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "IDAIRLINE")
    private Airline airline;
}</code>

In diesem Beispielsweise ist Airline die besitzende Entität, da sie Eigentümerin der AirlineFlights-Sammlung ist. Die Beziehung von Airline zu AirlineFlight erfolgt über die Eigenschaft „airlineFlights“.

Auf der AirlineFlight-Seite ist die Eigenschaft „airline“ mit @ManyToOne und mappedBy = „airlineFlights“ annotiert. Dies gibt an, dass AirlineFlight die nicht besitzende Seite der Beziehung ist und die Airline-Eigenschaft durch die AirlineFlights-Eigenschaft in Airline abgebildet wird.

Im bereitgestellten Datenbankschema verfügt AirlineFlights über die IDAIRLINE-Spalte als Fremdschlüssel für Airline . Daher ist Airline tatsächlich der Eigentümer der AirlineFlights-Entität.

Durch die Verwendung von „mappedBy“ stellen Sie eine bidirektionale Beziehung her, ohne AirlineFlight eine zusätzliche Fremdschlüsselspalte hinzuzufügen. Stattdessen verknüpfen JPA und Hibernate die Entitäten automatisch basierend auf den angegebenen Eigenschaftszuordnungen.

Das obige ist der detaillierte Inhalt vonWelche Rolle spielt „mappedBy“ in JPA und Hibernate für die Verwaltung bidirektionaler Beziehungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn