Heim > Java > javaLernprogramm > Hauptteil

Beziehungen in JPA: Entitäten ohne Abhängigkeit erstellen

Mary-Kate Olsen
Freigeben: 2024-11-27 03:54:13
Original
607 Leute haben es durchsucht

Beziehungen in JPA: Entitäten ohne Abhängigkeit erstellen

Beim Erstellen einer Backend-API wird häufig mit Entitätsbeziehungen gearbeitet, um Daten zu organisieren. Typischerweise sehen wir in Kursen oder Tutorials meist bidirektionale Beziehungen. Was aber, wenn Sie möchten, dass eine Entität unabhängig von der anderen existiert? In diesem Artikel untersuchen wir, wie man eine unidirektionale Beziehung mit JPA/Hibernate nutzt, um dies zu erreichen.

Inhaltsverzeichnis

  • Kontext und Problem
  • Entitätsmodellierung
  • Szenarien zum Speichern von Daten
    • Studenten ohne Abschlussarbeitsplan erstellen
    • Aktualisierung des Studenten, um mit einem Abschlussarbeitsplan in Verbindung zu treten
  • Vorteile des Beziehungsmanagements auf Studentenseite
  • Alternative: Verwalten der Beziehung auf der Seite des Abschlussarbeitsplans
  • Auswahl der richtigen Konfiguration für Ihre Anforderungen

Kontext und Problem:

Stellen Sie sich vor, Sie haben zwei Entitäten: Studenten- und Abschlussarbeitsplan. Die Beziehung zwischen Student und ThesisSchedule ist „viele-zu-eins“, was bedeutet, dass ein Student mit einem Dissertationsplan verknüpft werden kann und jeder Zeitplan mehrere Studenten umfassen kann.

In diesem Fall besteht unser Ziel darin, die Erstellung eines Studenten zu ermöglichen, ohne dass zuerst ein Abschlussarbeitsplan definiert werden muss. Diese Unabhängigkeit ist beispielsweise hilfreich, wenn Sie Studierende zur Datenbank hinzufügen, bevor Sie Stundenpläne für Abschlussarbeiten erstellen.

  • Aufgetretenes Problem: Bei einer bidirektionalen oder schlecht konfigurierten Beziehung kann das Erstellen eines Studenten fehlschlagen, wenn noch kein ThesisSchedule erstellt wurde, selbst mit der Annotation nullable = true. Sehen wir uns an, wie wir dieses Problem mit einer unidirektionalen Beziehung lösen können.

Entitätsmodellierung

Wir erstellen Student- und ThesisSchedule-Klassen unter Verwendung einer unidirektionalen „viele-zu-eins“-Beziehung von Student zu ThesisSchedule.

Studenten-Entitätscode:

Relationships in JPA: Creating Entities Without Dependency

ThesisSchedule-Entitätscode:

Relationships in JPA: Creating Entities Without Dependency

Hier haben wir eine unidirektionale Beziehung von Student zu ThesisSchedule, angezeigt durch die Annotation @ManyToOne in der Student-Klasse. Durch die Angabe von nullable = true ermöglichen wir die Erstellung eines Studenten, ohne unbedingt mit einem ThesisSchedule verknüpft zu sein.

Szenarien zum Speichern von Daten

Sehen wir uns an, wie sich dieses Setup auf die Datenbank überträgt und wie Daten über eine API gespeichert werden können.

Einen Studenten ohne einen Abschlussarbeitsplan erstellen

Mit diesem Setup können wir einen Studenten erstellen, ohne einen Abschlussarbeitsplan bereitzustellen.

POST-Anfrage zum Erstellen eines Studenten (ohne Abschlussarbeitsplan):

Relationships in JPA: Creating Entities Without Dependency

Dadurch wird ein neuer Eintrag in der Student-Tabelle mit einem Nullwert für die Spalte thesis_schedule_id erstellt.

Ergebnis:

Relationships in JPA: Creating Entities Without Dependency

Aktualisieren des Studenten, um ihn mit einem Abschlussarbeitsplan zu verknüpfen

Sobald ein Abschlussarbeitsplan erstellt wurde, können wir den Studentendatensatz aktualisieren, um ihn damit zu verknüpfen.

Zeitplan für die Erstellung einer Abschlussarbeit:

Relationships in JPA: Creating Entities Without Dependency

Dieser neu erstellte ThesisSchedule könnte die ID 1 haben.

Aktualisierung des Studenten mit ThesisSchedule:

Relationships in JPA: Creating Entities Without Dependency

Ergebnis:

Relationships in JPA: Creating Entities Without Dependency

Jetzt ist Larose mit dem neu erstellten ThesisSchedule verknüpft.

Vorteile der Beziehungsführung auf Studentenseite:

  • Flexibilität bei der Erstellung: Wir können einen Studenten unabhängig von einem Abschlussarbeitsplan erstellen, was die Erstellung einer unabhängigen Entität ermöglicht.
  • Einfachheit der Struktur: Eine unidirektionale Beziehung vereinfacht Interaktionen, da ThesisSchedule sich der Beziehung zum Studenten nicht bewusst sein muss.
  • Skalierbarkeit: Wenn wir diese Beziehung später bidirektional machen müssen, können wir die ThesisSchedule-Klasse aktualisieren, um eine Sammlung von Student einzuschließen.

Alternative: Verwalten der Beziehung auf der ThesisSchedule-Seite

In manchen Fällen kann es sinnvoller sein, die Beziehung von der ThesisSchedule-Seite aus zu verwalten. Dieser Ansatz ist nützlich, wenn wir möchten, dass der Zeitplan für die Abschlussarbeit die zugehörigen Studenten verwaltet und den Überblick über diejenigen behält, die an einem bestimmten Zeitplan teilnehmen.

Entitätsmodellierung

In diesem Setup enthält ThesisSchedule eine Sammlung von Student, um eine „Eins-zu-viele“-Beziehung darzustellen, während Student keinen Verweis auf ThesisSchedule verwaltet.

ThesisSchedule-Entitätscode:

Relationships in JPA: Creating Entities Without Dependency

Studenten-Entitätscode:

Relationships in JPA: Creating Entities Without Dependency

In dieser Konfiguration enthält ThesisSchedule eine Liste der Studenten über die Annotation @OneToMany. Folglich können Studenten zu ThesisSchedule hinzugefügt oder daraus entfernt werden, ohne dass ein direkter Link in Student.

erforderlich ist

Vorteile der Beziehungsverwaltung auf Seiten von ThesisSchedule:

  • Datenzentralisierung: Alle Informationen über Studenten, die mit einem Abschlussarbeitsplan verknüpft sind, werden in ThesisSchedule zentralisiert, was den Zugriff auf relevante Daten erleichtert.
  • Erhöhte Kontrolle: ThesisSchedule kann seine Studenten verwalten und vereinfacht so die Handhabung von Gruppen von Studenten, die am selben Stundenplan teilnehmen.

Wählen Sie die richtige Konfiguration für Ihre Anforderungen:

Zusammenfassend lässt sich sagen, dass es von den spezifischen Anforderungen Ihrer Anwendung abhängt, ob die Beziehung auf der Studenten- oder Abschlussarbeitsplanseite verwaltet werden soll:

  • Vom Studenten verwaltete Beziehung: Verwenden Sie dieses Setup, wenn Sie Studenten unabhängig von einem Abschlussarbeitsplan erstellen und optional später einen Zeitplan mit einem Studenten verknüpfen möchten.
  • Von ThesisSchedule verwaltete Beziehung: Diese Option ist vorzuziehen, wenn der Dissertationsplan seine Studenten verwalten soll, sodass er zum Kern der Beziehung zwischen Entitäten wird.

Beide Konfigurationen bieten Flexibilität und ermöglichen gut organisierte Backend-APIs basierend auf den gewünschten Datenbeziehungen. Durch die Anwendung von Best Practices zur Strukturierung von Entitätsbeziehungen können Sie Ihre Datenbank effektiv modellieren, um die spezifischen Anforderungen Ihrer Anwendung zu erfüllen.

Unidirektionale Beziehungen sind eine leistungsstarke Option zum Verwalten optionaler Abhängigkeiten zwischen Entitäten in einer Backend-API.

Ich hoffe, dass diese Lösung anderen Entwicklern hilft, unidirektionale Beziehungen in JPA/Hibernate besser zu verstehen und zu nutzen.

Das obige ist der detaillierte Inhalt vonBeziehungen in JPA: Entitäten ohne Abhängigkeit erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage