Ich habe vor kurzem begonnen Frühjahr-data-Rest für meine Anwendung. Ich habe folgende JPA-Entitäten:POST verschachtelte Objekte mit Feder Daten Rest?
@Entity
public class Super {
@Id
private long id;
@JoinTable
@OneToMany(cascade = CascadeType.ALL)
private List<Child> children;
}
-----------------------------------------
@Entity
public class Super2 {
@Id
private long id;
@JoinTable
@OneToMany(cascade = CascadeType.ALL)
private List<Child> children;
}
-----------------------------------------
@Entity
public class Child {
@Id
private long id;
@Column
private String childMetadata;
}
Ich kann neue Instanzen von Super
oder Super2
von 2 Methoden denken Sparend:
- eine
@RestResource
fürChild
Klasse Expose -> Erstellen Sie alle Instanzen vonChild
vor Erstellen von Instanzen vonSuper
oderSuper2
-> Führen Sie die URLs allerChild
Instanzen in Nutzlast vonSuper
oderSuper2
. - Pass die Details
Child
in der Nutzlast vonSuper
oderSuper2
ohne@RestResource
fürChild
Klasse auszusetzen und dieCascadeType.ALL
wirdChild
Instanzen schaffen kümmern.
Es gibt einige Profis mit den beiden Methoden:
- Mit der Option 1, erhalte ich eine Fähigkeit, neue
Child
Objekte durchPOST
ing die URL der neuenChild
zuhttp://<server>:<port>/super/1/children
-Super
oderSuper2
nur hinzuzufügen. Aber ich verliere definitiv die kaskadierende Funktionalität der Datenbank, wenn ich diese Methode verwende. - Mit der Option 2, erhalte ich die alle Kaskadierung Funktionalitäten Datenbank, aber ich verlieren die Flexibilität des Hinzufügens neuer
Child
Instanzen.
Gibt es etwas, das ich total verpasst haben? Ich möchte einen Weg, um die Kaskadierungsfunktionalität der Datenbank zu nutzen, ohne die Flexibilität zu verlieren, neue Kinder im laufenden Betrieb hinzuzufügen.
Danke für Hilfe. :)
persönlich verwende ich nicht Frühjahr- Datenruhe. Nach meiner Erfahrung, es funktioniert ziemlich gut beim Lesen von Daten, solange Sie nur für jede Entität eine Ansicht (JSON-Darstellung) haben. Das Schreiben von Daten ist jedoch oft komplizierter, da Sie die Beziehung verwalten müssen, und dies erfordert oft benutzerdefinierten Code. Auch wenn Sie Elemente aus JSON Deserialisierung erstellen, haben Sie einiges über freistehende JPA-Entitäten wissen, was die meisten Entwickler nicht.Die meisten Entwickler wären besser dran, separate DTOs für JSON-Ansichten zu schreiben und Service-Methoden zu schreiben, um die Daten zu erhalten. –