Chciałbym pobrać Screening (seans) z Seat (miejscem) i z Booking (rezerwacją) po bookingId. Screening ma relację one-to-many z Seat a Seat one-to-many z Booking (miejsce może mieć wiele rezerwacji, ale tylko jedna moża być aktywna, reszta musi być anulowana).
Napisałem taką metodę, ale dostaje MultipleBagFetchException:

@query("select s from booking_screening s join fetch s.seats se join fetch se.bookings b where b.id = :bookingId")
Optional<Screening> readByBookingId(@Param("bookingId") Long booking);

#java #spring
Czytam długo o stateful vs stateless microservices i dalej nie czaję tematu i mam wrażenie, że każdy w google pisze co innego.

Jak mam koszyk w sklepie internetowym i dodaje produkty to mikroserwis, gdzie mamy endpoint /cart/addItem POST i zapisujemy w bazie koszyk jest stateless czy stateful? Bo teoretycznie w tym poscie wysyłamy id koszyka, które już wcześniej otrzymaliśmy z endpointa (więc kolejne requesty polegają na poprzednich) oraz produkty, a z drugiej strony w metodzie kontrolera pobieramy koszyk z bazy i tam dodajemy produkty. Czyli tutaj jest stateless bo posiłkujemy się zewnętrzną bazą czy stateful bo wysyłamy utworzony wcześniejkoszyk?

Co w przypadku security? Musimy wysyłać jakieś ciasteczko, token itd, czyli tutaj stan jest dzielony między requestami czyli interceptor ktory sprawdza sesje uzytkownika jest stateful?

Można
@Volantie: serio takie szczegoly zaprzataja Ci glowe? to tylko chodzi o wywolanie RESTa, zaden to rocket science, webclient dodatkowo bedzie mogl dzialac nieblokujaco i tyle, nie ma co sie spuszczac, docelowo i tak trzeba bedzie niedlugo przejsc na webclienta
  • Odpowiedz
to użyj komendy docker compose up -d i wtedy uruchomią ci się te 2 kontenery. ale nadal będą to właśnie 2 osobne kontenery.
  • Odpowiedz
  • 0
@Davidozz: ale sam stomp.js też to daje. Niektóre przykłady czatu, które można znaleźć w necie używają dodatkowo tej biblioteki i chodzi mi o to co ona daje, czego stomp.js nie daje.
  • Odpowiedz
@VirtualSlimShady: z tego co zrobumialem

sockjs jest to tka jakby polyfill ktory dziala na http kiedy nie ma opcji uzycia websocketow powiedzmy chcesz uzyc websocketow, czy to socket.io czy stomp ale dostajesz error, ze ws: jest blocked czy not supported bo jakis starszy browser czy cos czy jakis firewall wtedy robisz fallback na sockjs
  • Odpowiedz
@WesolyPonurnik: Nie rozumiem - Java jest kompatybilna wstecz (w zdecydowanej większości przypadków), dodatkowo Jave używa się głównie w aplikacjach webowych więc użytkownika końcowego nie wiele to obchodzi jaką ma wersje Javy
  • Odpowiedz
@whoru: jeszcze pewnie do tego używają JUnit 4 wypuszczonego w 2006 roku albo Serializable z javy 1.1 o którym samo Oracle jedzie że to gówno XD jak mnie jeden z drugim pytaja na rozmowie to od razu jako czerwona flaga bo musi być jakieś ostre legacy
tubidubidam - @whoru: jeszcze pewnie do tego używają JUnit 4 wypuszczonego w 2006 rok...
  • Odpowiedz
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.
  • Odpowiedz
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
  • Odpowiedz
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 #
@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ę
  • Odpowiedz
@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
  • Odpowiedz
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
@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
  • Odpowiedz
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?
  • Odpowiedz
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
  • Odpowiedz
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
Heja,

Macie jakiegoś fajnego githuba / kurs z aplikacją obejmującą front + back? Coś w stylu react + java + spring + hibernate i pisane i zapięte w jakimś AWSie (nie obchodzi mnie tematyka)? W miarę takich zasad jak to powinno być zrobione? Miałem kiedyś githuba do czegoś takiego ale nie mogę znaleźć. Może macie coś ciekawego?

#java #programowanie #spring #reactjs #aws
@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.
  • Odpowiedz
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ść
SoftBull - MARATON SZKOLENIOWY DLA JAVA DEVELOPERÓW - 31 FINAŁ WOŚP

Właśnie trwa 28h...
  • Odpowiedz
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 kodzie, w sensie, że normalnie wiesz gdzie leci request i po kolei wiesz które metody się wywołają, a tutaj masz tylko nadpisane metody void handle z jakąś adnotacją np. @ CommandHandler w różnych warstwach i #!$%@? wie, kiedy się to wywoła.

To jest serio takie wymagające, czy o
@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ę,
  • Odpowiedz
@mk321: Jeszcze parę dni temu napisałbym elaborat na temat pamięci, różnicy pomiędzy ECC a non ECC. Ale dziś i tak nikt tego nie przeczyta.
  • Odpowiedz