Rozbudowane encje z lazy loading`ami, a ich częściowe przekazywanie.

0

Siemka. Czy mógłby mi ktoś wytłumaczyć w jaki sposób wysyła się przez REST`a, lub nawet przez model, "częściowo" encje ( czyli rozbijając ją na mniejsze części ) ?

Tłumacząc chcemy na froncie mieć przykładowo listę firm, która to każda z nich zawiera wiele działów, ale nie chcemy ich w tym momencie wyświetlać. Przekazując listę firm nie chcemy przecież za każdym razem pobierać z bazy i przekazywać na front wszystkich jej działów skoro nie są potrzebne ( przynajmniej tak mi się wydaje i wnioskuję, że wydajnościowo byłaby to lipa np. 10 firm po 10 działów ). Jednocześnie chcemy mieć też możliwość wyświetlenie tej firmy z wszystkimi działami, gdy będzie taka konieczność. Wydaje mi się, że można to zrealizować tworząc po kilka różnych DTO`sów ( zawierających tylko potrzebne w danym momencie pola ) dla takiej encji firma, jednak wymagałoby to również wiele różnych endpointów w kontrolerach.

Na przykładzie diagramu z linku : https://github.com/DSniatecki/YourFleetManager/blob/master/SQL/Database-Diagram-Screenshot.jpg
CompanyDTO zawierałoby pola : String nazwaFirmy, obiekt typu Address i ContactDetails, oraz Set<CompanyDepartment>. A CompanyBasicDTO już np. tylko Stringa nazwaFirmy i obiekt ContactDetails. By nie wykonywać niepotrzebnych zapytań w encji Company nieużywane przez CompanyBasicDTO pola, byłyby na lazy loadingu.

Głowię się nad tym od kilku dni i nie mogę znaleźć tego nigdzie wytłumaczonego. Z tego co widziałem w tutorialach / czy na różnych projektach na githubie to zazwyczaj pobierali całe obiekty, a wykorzystywali tylko procent, szczególnie na hinduskich tutorialach. Z góry wielkie dzięki za pomoc i przeczytanie tej małej powieści :)

1

a wykorzystywali tylko procent, szczególnie na hinduskich tutorialach

"Ludwiku Dornie i Sabo... nie idzcie tą drogą.. Oczywiście że warto stosować w takich przypadkach wiele DTOsów, a swoją drogą słyszałes o N+1 problemie?

0
scibi92 napisał(a):

"Ludwiku Dornie i Sabo... nie idzcie tą drogą.. Oczywiście że warto stosować w takich przypadkach wiele DTOsów, a swoją drogą słyszałes o N+1 problemie?

Mniej więcej wiem o co chodzi, ale tematu jeszcze nie zgłębiałem i próbowałem go rozwiązać.

Polecacie jakieś dobre materiały, które nauczę tworzyć wydajne springowe serwisy ( najlepiej takie, które dobrze poruszają temat operowania na bardziej skomplikowanych enacjach ( częściowe pobieranie z bazy, tworzenie dobry DTO`sów, LazyLoadingi i mapowania obiektów(które nie sforsują tych ładowań), jak odbierać tylko część encji, edytować ją w bazie i zmienić tylko to co nas interesuje ). Przerobiłem wiele kursów na Udemy i Pluralsight, ale w każdym tylko podstawy, ewentualnie mnóstwo teorii . Przy pisaniu kodu zawsze ten problem zajmuje mi większość czasu, a i tak na końcu nigdy nie jest tak jakbym chciał. Może czas na książki. Polecana się wydaje być : High-Performance Java Persistence . Ona raczej ewentualnie pomoże zrozumieć lepiej JPA i Hibernate, ale nie resztę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1