Heim >Java >javaLernprogramm >Wie erleichtert „MappedBy' bidirektionale Beziehungen in JPA und Hibernate?

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

DDD
DDDOriginal
2024-11-01 21:45:02967Durchsuche

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

MappingBy in JPA und Hibernate verstehen

In objektrelationalen Mapping-Frameworks (ORM) wie JPA und Hibernate ist MappedBy eine nützliche Annotation 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 ist 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 Feldes 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 Feldes 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 in beiden Tabellen explizite Fremdschlüsseldefinitionen erforderlich sind.
  • Optimierung: Durch die Angabe des Besitzes der Beziehung kann MappedBy die Datenbankleistung optimieren, indem unnötige Join-Tabellen oder Fremdschlüsseleinschränkungen vermieden werden.

Beispiel

In Ihrem bereitgestellten Beispiel, bei dem eine Fluggesellschaft viele AirlineFlights besitzt und AirlineFlights zu einer Fluggesellschaft gehören, sollte MappedBy in der AirlineFlight-Klasse wie folgt verwendet werden:

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

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

In diesem Beispiel ist das @ Die MapsId-Annotation gibt 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.

Das obige ist der detaillierte Inhalt vonWie erleichtert „MappedBy' bidirektionale Beziehungen in JPA und Hibernate?. 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