Graphen und Referenzen
JPA-Entity-Graphen bestimmen, wie tief eine Entity geschrieben und gelesen wird. Referenzen kommen per ID, und beide Seiten einer Beziehung bleiben synchron.
Derselbe Graph zum Laden und zum Mappen
Übergib einen EntityGraph, dann werden bei Klassen mit EntityProvider nur die Attribute des Graphen und seiner Subgraphen serialisiert. Die Abfrage, die die Entity geladen hat, und das JSON beschreiben dieselbe Form.
@JsonbGraphProperty(transitive = true) nimmt eine Property unabhängig vom Graphen auf. Eine Property namens links ist immer dabei, für Hypermedia-Links.
Graphen begrenzen auch Updates
Ist das Ziel eine gespeicherte Entity (version über -1) und ein Graph gegeben, werden nur dessen Attribute geschrieben. Ein Client kommt nicht tiefer als der Graph, den er bekommen hat.
Per ID, über den EntityLoader
Ein verbundenes Objekt, das das Ziel noch nicht hält, wird über die "id" in seinem JSON aufgelöst. Der Loader liefert die verwaltete Instanz, die als Referenz gesetzt wird; unbekannte IDs erzeugen eine neue Instanz.
Beide Seiten bleiben konsistent
Nach dem Setzen einer JPA-Beziehung aktualisiert der Mapper die Gegenseite: die besitzende Seite aus mappedBy, die inverse Collection eines @ManyToOne oder den Partner eines @ManyToMany.
Kinder bekommen ihr Elternteil
Bei jedem Element wird die mappedBy-Property auf den Besitzer gesetzt.
Das Elternteil bekommt das Kind
Der Besitzer kommt in die inverse Collection des neuen Elternteils.
Partner zeigen zurück
Property oder Collection des Partners zeigt auf den Besitzer.