Niedawno zacząłem korzystać z resursów danych wiosennych dla mojej aplikacji. Mam następujące podmioty WZP:OGŁASZANIE zagnieżdżonych obiektów przy użyciu spoczynkowych danych sprężynowych?
@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;
}
mogę myśleć z 2 metod zapisywania nowych instancji Super
lub Super2
:
- narazić
@RestResource
dlaChild
klasę -> Utwórz wszystkie instancjeChild
przed tworzenie instancjiSuper
lubSuper2
-> Przesyłaj adresy URL wszystkich instancjiChild
w polu danych o wartościSuper
lubSuper2
. - Przepuścić szczegóły
Child
w ładownościSuper
lubSuper2
bez narażania@RestResource
Child
dla klasy iCascadeType.ALL
zadba o stworzenieChild
instancji.
Istnieją pewne plusy z obu metod:
- Przy opcji 1, pojawia się możliwość dodawania nowych
Child
obiektówSuper
lubSuper2
tylko przezPOST
ing url nowejChild
dohttp://<server>:<port>/super/1/children
. Ale zdecydowanie tracę kaskadową funkcjonalność bazy danych, jeśli używam tej metody. - Z opcją 2 otrzymuję wszystkie kaskadowe funkcje bazy danych, ale tracę elastyczność dodawania nowych instancji
Child
.
Czy jest coś, co całkowicie przegapiłem? Chcę korzystać z kaskadowej funkcjonalności bazy danych bez utraty elastyczności dodawania nowych dzieci w locie.
Dzięki za pomoc. :)
Osobiście nie używać Spring- dane-odpoczynek. Z mojego doświadczenia wynika, że działa całkiem dobrze podczas odczytu danych, o ile posiadasz tylko jeden widok (reprezentację JSON) dla każdej jednostki. Jednak pisanie danych jest często bardziej skomplikowane, ponieważ musisz zarządzać relacją, co często wymaga niestandardowego kodu. Również kiedy tworzysz jednostki z deserializacji JSON, musisz sporo wiedzieć o oderwanych jednostkach JPA, których większość programistów nie tworzy.Większość programistów lepiej byłoby napisać oddzielne DTO dla widoków JSON i napisać metodę usługi, aby utrzymać dane. –