JSON wypluwa za dużo danych?

JSON wypluwa za dużo danych?
EF
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:53
0

Cześć,
Dopiero wchodzę w temat Jason + Spring, stąd noobowe pytanie/problem: chcę wyciągnąć dany post użytkownika, a mianowicie tylko id i treść tegoż posta. W obsłudze po stronie jQuery dałem wyświetlania tylko tych pól i spoko, ale na konsoli aplikacji widzę, że *wypychany *jest komplet danych dla obu encji biorących w tym udział czyli dla encji Post i Autor, czyli wszystkie pola z bazy wraz z wartościami. To chyba nie powinno tak działać, czy się mylę?

shagrin
  • Rejestracja:około 17 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Norwegia, Stavanger
1

Warstwa wyświetlania danych nijak ma się do tego co zwraca backend. Jeśli chcesz ograniczyć ilość zwracanych danych, musisz to zrobić zanim je wyślesz do front endu.


EF
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:53
0

Czyli np. zamiast zwracać cały obiekt Post to zwracać jedynie określone pola?

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:16 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
1

I tak i nie. Do tego służą widoki (adnotacja @JsonView) na polach encji. Jeżeli zaczniesz np. nullować niechciane pola to może okazać się, że usuwasz dane z bazy (bo całość ma transakcję i traktuje nullowanie jako update). Opisane co i jak https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
Zobacz pozostałe 2 komentarze
ŁF
Ręce opadają... Do view dostarczać obiekty powiązane z bazą danych, zamiast jednego pożądanego dostarczać całą listę i jeszcze przy wyświetlaniu przetwarzać je usuwając.
Koziołek
Wiem mi też opadły i się cieszyłem, że cycków nie mam bo by pewno do rąk dołączyły.
EF
Ja bym prędzej zrobił POJO, które byłoby kontenerem dla obiektu (lub obiektów) encji, np Post, które zawierałoby tylko wybrane pola z jednej lub więcej encji.
EF
@Koziołek, tak. Chociaz jeszcze zastanawiam się czy nie możnaby takich obiektów wrzucać do ModelAndView, czyli obiekt "authorName" a wartość np. post.getAuthor().getName()
L2
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 lat
  • Postów:10
0

Dawno już nie korzystałem z ORM-a, ale z tego co pamiętam to chyba w tej sytuacji używałem adnotacji @JsonIgnore dla danego pola.
Możesz ewentualnie pokusić się jeszcze o jakieś NamedQuery, żeby zwracało Ci te konkretne pola. Koledzy poprawcie jeśli się mylę.

Koziołek
@JsonIgnore ma tą wadę, że zawsze ignoruje dane pole. Widoki pozwalają na dynamiczne sterowanie widocznością pól.
L2
Dzięki, dobrze wiedzieć :-)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.