Kurde, muszę się poradzić, bo chyba trochę się pogubiłem. Mam takie trzy metody jak na obrazku. Pierwsza zwraca profil użytkownika, jako argument przyjmuje użytkownika, który przychodzi z fasady. Jak widać, mapowanie i zwrot obiektu DTO. Zastanawiam się czy ten Optional ma tam sens. Wykorzystuję go w kontrolerze i dzięki temu zwracam status 200, albo 404.

Sama fasada o której wcześniej wspominałem wygląda tak, że jest w niej jedna metoda w której pobierany
V.....y - Kurde, muszę się poradzić, bo chyba trochę się pogubiłem. Mam takie trzy me...

źródło: kod

Pobierz
@draxgar: no to właśnie tak robię... wstrzykuję użytkownika i przepycham go przez wszystkie warstwy, przecież po to jest ta fasada. Tylko teraz przy API i JWT są dwa identyczne zapytania do tabeli użytkownika, pierwsze w filtrze i drugie w kontrolerze robi ta fasada i dlatego chcę to zoptymalizować żeby chociaż w obrębie jednego requestu nie było dwóch identycznych zapytań do bazy danych.
Nie korzystałem wcześniej z bazy mongo w springu i gdy próbuję aktualizować obiekt z inną wartością jakiegoś pola to obiekt jest aktualizowany. Ale mam przypadek, że będzie wiele requestów (eventów) z aktualizacją równocześnie więc dodałem pole version z adnotacją i dostaję cały czas exception przy repository.save:

Write operation error on server mongo-replica-set-0:27017. Write error: WriteError{code=11000, message='E11000 duplicate key error collection: blabla index: id dup key: { _id: "doc1" }


Moje klasy:

public
@nick230: Nie znam się na Javie ale może ta kjak @Id mówi co jest kluczem tak samo @Version może oznaczac dla javowego clienta że pole version to także klucz i nie pozwala wrzucić obiektu z takim samym kluczem
hej mirki. Jest ktoś łopatologicznie mi wyjasnic sens uzywania liquibase w kontekscie hibernate?
Przykladowo caly czas jak chcialem robić klasy tabele albo cos pozmieniac to po prostu w danej klasie, ktora byla encja dopisywalem odpowiednie pola, ktore mi sie mapowaly na odpowiednie kolumny w tabeli.
No i teraz generalnue ten liquibase co ma na celu w tym wszystkim? czemu tworzenie tego changeloga jest bardzo wazne?
#spring #java #hibernate #programowanie
@Volantie Jeśli piszesz sobie coś do szuflady to wystarczy autogenerowanie create/update przy starcie. Jednak jeśli projekt ma być używany i utrzymywany toole w stylu liquibase robą się niezbędne.

Po pierwsze masz wtedy gwarancje że struktura bazy danych zawsze będzie taka sama, niezależnie ile razy uruchamiałeś aplikacje i w jakich wersjach. Jednak największą zaletą jest umożliwienie pisania skryptów migracyjnych. Wyobraź sobie że w wyniku implementacji jakiejś funkcji w pewnej wersji pojawiło się nowe
@Volantie: wyobraź sobie ogarnięcie 5 klientów, z ich bazami danych, z których każdy ma swoich DBA i grzebią w nich sami. Teraz dorzuć do tego, że twoja aplikacja ma 21 lat, 370 wydanych wersji. Każda z tych wersji wprowadza zmiany na bazie i każdy z klientów ma różne wersje. Każdy klient ma bardzo wrażliwe dane i nie chce niedostępności.
Flyway/liquibase czy inne systemy wersjonowania bazy zdejmują udrękę ogarniania tego. Biblioteka sama
Kiedy warto używać adnotacji z Lomboka, a kiedy lepiej odpuścić i napisać coś ręcznie? Tak się zastanawiam czy przy wstrzykiwaniu zależności do serwisów i kontrolerów konstruktor napisać ręcznie czy skorzystać z adnotacji @RequiredArgsConstructor. Czasami przy encjach czy obiektach DTO, np. jak dodaję adnotację @builder to wychodzi mi na koniec cały stos adnotacji i nie wiem czy jest to dobre.

Mam też pytanie co do samego buildera - kiedy warto go tworzyć,
@Killeras: @VirtualSlimShady ja bym był ostrożny z tym używaniem buildera tylko po to, żeby mieć parametry nazwane. Jeśli istnieją domyślne wartości dla parametrów to builder jak najbardziej, w innym przypadku to moim zdaniem spore nadużycie. W przypadku konstruktora, jeśli nie przekażesz wszystkich parametrów, dostaniesz błąd w czasie kompilacji, w przypadku buildera (metody newBuilder()/build() bez parametrów) błąd dostaniesz dopiero w czasie działania programu. Oprócz tego w przypadku gołego buildera nie widać (bez
Hej mirki, ma ktoś jakiś pomysł jak to najlepiej rozwiązać?
Mam klasy Dish oraz Product, obie klasy dziedziczą po klasie Food, generalnie jedyna różnica tych dwóch klas polega na tym, że Dish zawiera jeszcze listę produktów (dla uproszczenia załóżmy, że Product ma tylko nazwę, a Dish nazwę + listę produktów). Dodatkowo mam klasę Calendar, który zawiera datę oraz obiekt Food (czyli produkt lub danie). I potrzebuje z poziomu kalendarza dostać się do
to dlaczego w Calendar nie przechowujesz obiektu klasy Dish, skoro potrzebujesz się dostać do jej metody? co chcesz konkretnie osiągnąć? po co ci ten Food wgl?
bo przecież takie jabłko też można zjeść, mimo, że nie posiada ono żadnych składników


@nerfipro174:
Przemyśl nazewnictwo, posiłek nazwałbym Meal

Natomiast do kalendarza można dodać zarówna dania jak i same produkt (bo przecież takie jabłko też można zjeść, mimo, że nie posiada ono żadnych składników)


Co stoi na przeszkodzie żeby jabłko było posiłkiem jednoproduktowym?

Calendar, przechowująca datę oraz obiekt typu Food

Niech mnie ktoś poprawi, ale nie łatwiej trzymać listę dań?
Gdzie w Spring Security w podstawowej konfiguracji uwierzytelniania dodawany jest header Authorization? Wpisujemy nazwę użytkownika i hasło w formularzu i później w filtrze BasicAuthenticationFilter jest wyciąganie tego headera. A chodzi mi o to kiedy i gdzie dane logowania są kodowane do Base64 i dodawane jako header?

#java #spring #naukaprogramowania
@srgs: zobacz sobie ale nie używaj tylko zrób po swojemu... to jest dobre jak chcesz zrobić POC-a czegoś co i tak później napiszesz normalnie. Miałem okazję rozwijać aplikacje które ktoś rozpoczął w jhipsterze nie do końca go czając. Nie było opcji robić upgrade jhipstera(polityka w projekcie) a z drugiej strony sam jhister bardzo utrudniał on dalszy rozwój systemu.
REST API - mini kurs wideo

Michał Gellert przygotował mały, skondensowany kurs wprowadzający w tematykę budowania API REST-owego.

https://sklep.mikr.us/cart/clear/add_product/7639

O co w tym chodzi, jakie są założenia takiego API, jak to powinno być zaimplementowane itp. Są to 3 wideo-lekcje, trwające łącznie 19 minut (stąd nazwa 'mini kurs') + transkrypcja wszystkiego.
W ostatniej lekcji Michał pokazuje, jak omawianą wiedzę można wprowadzić w życie z użyciem języka JAVA i frameworka Spring.

Kurs dostępny
imlmpe - REST API - mini kurs wideo

Michał Gellert przygotował mały, skondensowany k...

źródło: rest_api_kurs

Pobierz
MARATON SZKOLENIOWY DLA JAVA DEVELOPERÓW - 31 FINAŁ WOŚP

Właśnie trwa 28h maraton szkoleniowy dla Java Developerów do którego można dołączyć w każdej chwili.

Harmonogram:
23-01-28 18:00 Spring Data - związki 1:1, 1:N, M:N / kierunkowość
23-01-28 19:45 Liquibase - System Kontroli Wersji Dla Baz Danych
23-01-28 21:15 Spring Data: Transakcje, Izolacje, Propagacje
23-01-28 22:45 Spring Security i OAuth2 Na Przykładach (Z Opisem Dużych Zmian Zachodzących W Wersji 2.7)
23-01-29 0:15 Zabezpieczanie
SoftBull - MARATON SZKOLENIOWY DLA JAVA DEVELOPERÓW - 31 FINAŁ WOŚP

Właśnie trwa 28h...
Kurcze, przerabiam sobie jakiś tutorial na temat event driven architecture (Saga) i im dalej w las tym wydaje mi się, że nie ogarniam i ta koncepcja to jest jakiś wielki burdel, gdzie mamy kilka tych samych klas (POJO z dodatkami), ale różnie nazwanych typu CreateProductCommand, ProductAggregate, ProductEntity, CreateProductRestModel, ProductLookupEntity (potrzebne do sprawdzenia event store), ProductCreatedEvent i w pakiecie query ProductRestModel ()

Do tego nie ma żadnej płynności w
@Someguy3517372: wszystko zależy od projektu jaki masz, weź pod uwagę, że wszystkie te przykłady itd są na wymyślnej przez kogoś domenie, która wymagania ma idealne pod DDD. Niestety często w korpo domena jest bardziej skomplikowana i wtedy zaczyna być jeszcze większy syf :)

Prawda jest taka, że będziesz miał w #!$%@? plików: value objecty, mappery, service, domain service, domain, handlery, repository, eventy a i tak pewnie na końcu okaże się, że
Mirki gdzie się trzyma w takiej spring bootowej apce hasła?
Potrzebuję admina login i hasło żeby się testy integracyjne wykonały, gdzie uderzam do rest endpointów i zapisuję coś na bazie. To gdzie mam zapisać to hasło i w jakiej formie?

Jak to będzie wyglądało na środowisko testowym, a jak produkcyjnym?

- Rozumiem, że mam utworzyć sobie pliki application-dev.properties, application-prod.properties i tam np. trzymać credentiale, ale właśnie w jakiej formie, bo jak wrzucę
Przy tworzeniu nowego seansu muszę sprawdzić czy poprzedni zakończył się już jeśli ten nowy ma być w tym samym dniu, w podobnym czasie i w tej samej sali co poprzedni. Dodatkowo mam takie wymaganie, że musi być przerwa godzinna między seansami w kinie jeśli odbywają się w tej samej sali. Wiadomo, trzeba taką salę po każdym seansie posprzątać. Np. poprzedni seans rozpoczął się 2023-01-02 o 16:30, w sali nr 3 i trwał