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.
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.
Wir erstellen Student- und ThesisSchedule-Klassen unter Verwendung einer unidirektionalen „viele-zu-eins“-Beziehung von Student zu ThesisSchedule.
Studenten-Entitätscode:
ThesisSchedule-Entitätscode:
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.
Sehen wir uns an, wie sich dieses Setup auf die Datenbank überträgt und wie Daten über eine API gespeichert werden können.
Mit diesem Setup können wir einen Studenten erstellen, ohne einen Abschlussarbeitsplan bereitzustellen.
POST-Anfrage zum Erstellen eines Studenten (ohne Abschlussarbeitsplan):
Dadurch wird ein neuer Eintrag in der Student-Tabelle mit einem Nullwert für die Spalte thesis_schedule_id erstellt.
Ergebnis:
Sobald ein Abschlussarbeitsplan erstellt wurde, können wir den Studentendatensatz aktualisieren, um ihn damit zu verknüpfen.
Zeitplan für die Erstellung einer Abschlussarbeit:
Dieser neu erstellte ThesisSchedule könnte die ID 1 haben.
Aktualisierung des Studenten mit ThesisSchedule:
Ergebnis:
Jetzt ist Larose mit dem neu erstellten ThesisSchedule verknüpft.
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.
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:
Studenten-Entitätscode:
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 istZusammenfassend 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:
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!