Spring odczytywanie danych z bazy danych

0

Hej mam takie pytanie.
Mam aplikację, która odczytuje dane z bazy danych. Dane przechodzą w taki sposób: DAO -> Service -> Controller.
W DAO pobieram dane z bazy danych, a w Controllerze zwracam te dane tak ?
Service jest tylko do przerzucania danych z DAO do Controllera, aby nie było bezpośredniego połączenia DAO -> Controller, tak ?

Jeśli chcę odczytać dane z dwóch tabeli to robię to w Controllerze używając dwóch Services, czy gdzieś indziej ?

1

Mam aplikację, która odczytuje dane z bazy danych. Dane przechodzą w taki sposób: DAO -> Service -> Controller.

Taki flow jest dobry tylko dla typowych aplikacji CRUDowych i na sam początek edukacji powinien wystarczyć. Dobrą praktyką jest oddzielanie obiektów domenowe od obiektów pojo wyciąganych z bazy danych. Model nie powinien być kalką bazy danych.

Service jest tylko do przerzucania danych z DAO do Controllera, aby nie było bezpośredniego połączenia DAO -> Controller, tak ?

Patrzysz na problem od złej strony. Takie połączenie Controller -> DAO jest wykorzystywane we wzorcu CQRS i jest ono jak najbardziej ok. W całej tej zabawie z Controllerami, DAO chodzi o to by odseparować od siebie pewne części aplikacji, by można było łatwiej przeglądać i rozwijać kod.

Jeśli chcę odczytać dane z dwóch tabeli to robię to w Controllerze używając dwóch Services, czy gdzieś indziej ?

Serwis nie powinien być zależny od ilości tabelek w bazie danych, co znaczy, że może korzystać z wielu DAO. Staraj się, żeby Serwisy były dobrze zdefiniowane i nie robiły za dużo.

1

Service jest tylko do przerzucania danych z DAO do Controllera, aby nie było bezpośredniego połączenia DAO -> Controller, tak ?

Jeśli twoja aplikacja nic nie robi, to tak :D Ale wtedy to można ją zastąpić kilkoma linijkami konfiguracji w jakimś Spring-Data-Rest albo wygenerować w 3 minuty. W prawdziwym świecie aplikcacje coś jednak robią i warstwa logiki zajmuje 90% całej aplikacji.

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.