„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erleichtert „MappedBy“ bidirektionale Beziehungen in JPA und Hibernate?

Wie erleichtert „MappedBy“ bidirektionale Beziehungen in JPA und Hibernate?

Veröffentlicht am 17.11.2024
Durchsuche:387

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

MappedBy in JPA und Hibernate verstehen

In objektrelationalen Mapping-Frameworks (ORM) wie JPA und Hibernate ist MappedBy eine nützliche Anmerkung für Aufbau bidirektionaler Beziehungen zwischen Entitätsklassen. Diese Annotation wird im Kontext von Eins-zu-Viele- und Viele-zu-Eins-Beziehungen verwendet.

Empfohlene Verwendung

Die empfohlene Verwendung von MappedBy lautet wie folgt:

  • Eins-zu-viele-Beziehungen: In einer Eins-zu-viele-Beziehung sollte die „viele“-Seite der Beziehung (die Seite mit einer Sammlung) das MappedBy haben Anmerkung. Diese Annotation gibt den Namen des Felds auf der „Eins“-Seite der Beziehung an, die die Fremdschlüsseleinschränkung enthält.
  • Viele-zu-Eins-Beziehungen: In einer Viele-zu-Eins-Beziehung Bei einer Beziehung sollte die „eine“ Seite der Beziehung (die Seite mit einem einzelnen referenzierenden Objekt) die Annotation „MappedBy“ haben. Diese Annotation gibt den Namen des Felds auf der „vielen“-Seite der Beziehung an, das die Fremdschlüsseleinschränkung enthält.

Zweck von MappedBy

MappedBy dient mehrere Zwecke:

  • Bidirektionale Durchquerung: In bidirektionalen Beziehungen können Sie mit MappedBy die Beziehung in beide Richtungen durchqueren, ohne dass explizite Fremdschlüsseldefinitionen in beiden Tabellen erforderlich sind.
  • Optimierung: Durch die Angabe des Eigentümers der Beziehung kann MappedBy die Datenbankleistung optimieren, indem unnötige Join-Tabellen oder Fremdschlüsseleinschränkungen vermieden werden.

Beispiel

In Ihrem bereitgestellten Beispiel sollte eine Fluggesellschaft, die viele AirlineFlights und AirlineFlights einer Fluggesellschaft besitzt, MappedBy in der AirlineFlight-Klasse wie folgt verwendet werden:

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

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

In diesem Beispiel gibt die @MapsId-Annotation an, dass das IDAIRLINE-Feld in AirlineFlight als Fremdschlüsseleinschränkung für die Airline-Entität verwendet wird. Indem Sie MappedBy hier verwenden, können Sie eine bidirektionale Beziehung zwischen Airline und AirlineFlight herstellen, ohne dass Fremdschlüsseleinschränkungen in beiden Tabellen erforderlich sind.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3