Hej! Wstrzymywałem się z założeniem tego tematu przez długi czas, najpierw chciałem stworzyć gotową aplikację i dopiero wtedy zadać kilka pytań - jednak mam w głowie tyle niejasności, że chciałbym je rozwiać już teraz.
Tekstu jest sporo a że szanuję wasz czas i nie każdy ma ochotę czytać tyle głupot to zaznaczyłem miejsca w których stawiam pytania.
Dzięki za każdą wskazówkę!
Projekt o którym mowa: https://github.com/xsiir/DietManager
-
Na forum natrafiłem na post w którym chwalony był wykład pana Jakuba Nabrdalika Modularity and hexagonal architecture . Oglądnąłem kilka razy, starałem się zrozumieć jak najwięcej i stworzyć projekt według tych zasad o których mowa w nagraniu. Wydaje mi się jednak, że nie potrafię przełożyć teorii na praktykę. Jakby cała moja wcześniejsza nauka programowania w Javie była oparta na wiecznym dodawaniu modyfikatorów private i public, to było dla mnie takie... naturalne. Podobnie zawsze dzieliłem aplikację na trzy pakiety: services, controllers i repository. A teraz? Mętlik. W teorii miało mi to ułatwić pracę a ja czuję się czasem zagubiony.
**Pytanie: ** 1. Czy https://github.com/xsiir/DietManager/blob/5b1beb0c21553c901fcd363bfea24803710dbfeb/src/pl/sienkiewicz/user/domain/UserFacade.java#L17 takie metody mogą mieć miejsce? Przez to, że dla mnie wygląda to inaczej niż wszystko co zwykłem widzieć, mam wrażenie że jest źle. Czy ja w ogóle robię to chociaż w małym stopniu dobrze? XD. 2. Do jednego modułu wrzucać wszystko co z niego korzysta? Czy w ogóle te dwa które wyznaczyłem są okej? -
Do tej pory do pisania frontu używałem JSP. Od tego projektu zacząłem pracować z Reactem. W jaki sposób udostępnić taki projekt na gicie? Front powinien być drugim repozytorium czy zamieścić go już w tym istniejącym z back-endem?
-
Z racji tego, że w warstwie bazy danych implementacja metod get, save, delete wyglądały identycznie to postanowiłem, że stworzę taką abstrakcyjną klasę https://github.com/xsiir/DietManager/blob/master/src/pl/sienkiewicz/utils/CRUDOperations.java która będzie rozszerzać poszczególne repozytoria które będą tego potrzebowały. Takie rozwiązanie jest okej? No i jak już przy tym jesteśmy: dalej w kodzie korzystam z Optional. Na ten moment robię to w ten sposób, że z fasady wywołuję sobie metodę która wyciągnie mi dajmy na to użytkownika i dopiero wtedy zwracam Optional.valueOf(ten_uzytkownik). Tak jest dobrze? Pytanie: Czy lepiej byłoby gdyby już sama warstwa bazy danych zwracała mi Optional<User> zamiast po prostu User? Dla zobrazowania, mowa o tym momencie: https://github.com/xsiir/DietManager/blob/1fb4f613d79349c290ab2e886272e6e145128023/src/pl/sienkiewicz/user/domain/UserFacade.java#L31
- Nie rozumiem jeszcze Spring Security. Wszystko co jest w projekcie jest przepisane z jakiegoś tutorialu znalezionego w sieci. Sporej części która jest jest tam zaimplementowana nie rozumiem. Pewnie dlatego właśnie nie działa tak jak chciałem żeby działało.
W JSP potrafiłem jakoś imitować sesję zalogowanego użytkownika przez jakieś session scope - natomiast teraz kiedy mam osobno front to nie mam pojęcia jak to zrobić - tym bardziej że jestem blady w React'cie. Chciałbym jednak spytać o samą zasadę, jak front powinien współpracować z serwerem.
Pytanie: Chciałbym, żeby "Twoje posiłki" były dostępne tylko dla użytkownika zalogowanego. Jak powinna wyglądać taka komunikacja? Po wciśnięciu buttona powinienem wysłać żądanie do serwera z pytaniem czy dla bieżącej sesji użytkownik jest zalogowany i jeśli tak to wyświetlić widok a jeśli nie to przekierować do strony z logowaniem?
Każdą inną uwagę też docenię. :))