Mamy to! Aż 329 programistów wzięło udział w moim wczorajszym, otwartym szkoleniu gdzie tematem przewodnim był ➡️Spring Data.

W trakcie liveCodingu, na praktycznym przykładzie systemu obsługi zleceń przerobiliśmy:
✅Implementacje związków miedzy relacjami - 1:1, 1:N, 1:M
✅Zabębniliśmy się w asocjacje unidirectional i bidirectional, ich implementacje, oraz omowilismy kiedy, którą stosować
✅Wykorzystaliśmy możliwości HQL do definiowania własnych zapytań
SoftBull - Mamy to! Aż 329 programistów wzięło udział w moim wczorajszym, otwartym sz...

źródło: comment_1646848290DsISPfER2qBuZ1BeZibRIz.jpg

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kaczoor:

Imo nie warto. Ja w życiu nie przeczytałem żadnej - tylko dokumentacje w miare potrzeby + baeldung.com i jego pdf-y jak tworzyc API
  • Odpowiedz
➡️Szkolenie Spring Data⬅️

7 marca o 19:00, słyszymy się na szkoleniu, gdzie pokażę Ci jak prawidłowo zaimplementować związki – jeden do jednego, jeden do wielu, oraz wiele do wielu. Przykłady zrealizujemy na praktycznych przykładach, które zapadną Ci w pamięć!

✅ Dowiesz się jak implementować związki 1:1, 1:N, M:N
✅ Przedstawię Ci konfigurację jednokierunkową i dwukierunkową
SoftBull - ➡️Szkolenie Spring Data⬅️

 7 marca o 19:00, słyszymy się na szkoleniu, ...

źródło: comment_1646412757VHibgenklaKigA4pdy6wxo.jpg

Pobierz
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Taka sytuacja
Potrzebuję wyświetlać 1000 ostatnich wierszy z bazy.
No więc paginacja i sortowanie po id malejąco.

Ale mamm kilka tabel i one mają swoje własne id z auto increment.
Jak w springu to najlepiej połączyć? Id się powtarzają między tabelami.
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@100x: od biedy możesz utworzyć nową tabelkę foo, w której będziesz miał takie pola

id_w_tabeli_źródłowej | nazwa_tabeli_źródłowej | insert_timestamp
i triggery after insert na wszystkich tabelach źródłowych żeby po dodaniu nowych wierszy do nich, dodawała się też informacja do tabeli foo
  • Odpowiedz
Hej mirki, mam debilny problem:
robię sobie zadanko z hyperskill.org, w którym mam usunąć z bazy danych H2 (treść w obrazku poniżej). Ogólnie metoda w kontrolerze jest prosta jak konstrukcja cepa:

@DeleteMapping("/api/recipe/{id}")
public void deleteRecipe(@PathVariable Long id) {
recipeService.deleteRecipeById(id);
arct2 - Hej mirki, mam debilny problem: 
robię sobie zadanko z hyperskill.org, w któ...

źródło: comment_16455688064x5zhyrjmjQPNZpn6bB8ex.jpg

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@arct2: 1. Patrz konsolę, ona prawdę Ci powie co jest nie tak. Jak byś wkleił stacktrace to pewnie nie trzeba by było analizować kodu.
2. Dodaj @Transactional do metody usuwającej. Widzę po importach że próbowałeś :)
3. deleteRecipeById zrób metodą void, bo nie zwrócisz Recipe skoro go chwilę temu usunąłeś.
  • Odpowiedz
➡️Szkolenie Spring MVC⬅️
Ponad 350 programistów - uwagę tylu osób udało mi się skupić na moim ostatnim LiveStreamie ze Spring MVC. Omówiliśmy zagadnienia takie jak:
✅ Obsługa żądań przez Spring
✅ Wzorzec architektoniczny MVC
✅ WyLiveCododowaliśmy przykładową aplikacje dla systemu fakturowego z wykorzystaniem Spring Web i biblioteki Bootstrap
✅ Skomunikować Backend z Thymleaf, ale również z Angular / React oraz skonfigurowaliśmy dla nich Cross-Origin.
SoftBull - ➡️Szkolenie Spring MVC⬅️
Ponad 350 programistów - uwagę tylu osób udało m...

źródło: comment_1645558167nqfGpQNCRuAKNoffsqeCKc.jpg

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mircy,
czy możecie polecić jakieś stronki/video/książki gdzie omawiany jest (lekko) obszerniejszy projekt niż ToDoApp lub serwis z postami i komentarzami? Mam na myśli naukę dobrych praktyk przy bardziej złożonej strukturze.
#springboot #spring #java
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@RadzieckaCalka: nie wiem czy nie lepszym pomysłem będzie zobaczyć kod źródłowy czegoś co znasz/używasz, bo wtedy masz już wiedzę domenową i łatwiej ogarnąć co i dlaczego ktoś tak to zaimplementował.
  • Odpowiedz
Robię findBySth(SELECT) potem ifPresent, jeśli false to tworzenie nowego obiektu i save(INSERT).
Teraz jest samo @Transactional.
Bazy danych do testów MariaDB z domyślnym silnikiem, PostgresSQL.
Jeśli wyśle z unit testu drugie zapytanie w czasie wykonywania pierwszego to w bazie w tabeli są już 2 wiersze.
W PostgreSQL domyślnym poziomem izolacji jest Read
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@100x:
Czyli szukasz czegoś na bazie, jak tego nie znajdziesz to tworzysz to i zwracasz użytkownikowi, tak?
Twój problem polega na tym, że jeżeli w tym samym czasie, dwie osoby wywołają szukanie, to duplikuje Ci rekordy w bazie danych?
Jeśli dobrze rozumiem, to możesz chyba ustawić unikalność na bazie. Wtedy drugi insert się wywali i nie będziesz miał duplikatów.
  • Odpowiedz
konto usunięte via Wykop Mobilny (Android)
  • 0
@100x:
Najłatwiej mieć unikatową kolumnę jak @kenshin985 napisał. Od biedy w niektórych zastosowaniach nada się też kolumna z hashem kilku pól modelu.
Jeśli masz jakąś zależność od innych rekordów, to IMO lock będzie drugą najlepszą opcją. Typu relacja AUTO do wielu CZESCI. Zalockowanie auta spowolni tylko równoległe operacje na tym aucie, a nie niepotrzebnie wszystkie na tym endpoincie.

Opcja 2 to już prawie inwalidacja cache i tylko czekać na bugi i problemy
  • Odpowiedz
➡️LiveStream: Spring MVC⬅️
21 lutego o 19:00, słyszymy się na kolejnym szkoleniu w którym pokażę Ci działanie wzorca architektonicznego MVC w praktyce.

✨️Zbudujemy aplikacje backendową z wykorzystaniem Spring Boot, a następnie zintegrujemy ją z różnymi technologiami frontendowymi: ✅Angular ✅React ✅Thymeleaf, po to, abyś zyskał rozeznanie, który z nich najlepiej dobrać w zależności od sytuacji.

Zapisz się na wydarzenie już teraz!
SoftBull - ➡️LiveStream: Spring MVC⬅️
21 lutego o 19:00, słyszymy się na kolejnym sz...

źródło: comment_16450380554kjS7ETKCDuatepXIxcbyT.jpg

Pobierz
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hibernate 5 – z okazji 30 finału WOŚP

▶️Organizuję retransmisję ponad 4h godzinnego szkolenia na temat Hibernate 5.
▶️ Udział jest bezpłatny, jednak wydarzenie jest organizowane z okazji 30 finału WOŚP. Dlatego szczera prośba o wsparcie akcji i wpłatę do naszej skarbonki.
▶️ Wydarzenie odbędzie się 29 stycznia o 19:00
▶️Więcej szczegółów w tym program szkolenia i rejestracja na stronie wydarzenia:
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

dziś o 19:00


@SoftBull: wchodzę na stronę teraz, czyli 19:03 a tam:TEN WEBINAR WYGASŁ!
To seminarium internetowe już się odbyło. Przepraszam, wygląda na to, że to przegapiłeś.
  • Odpowiedz
@masterix: Rejestracja była o 19:00, więc jeśli nie zdążyłeś się zrejestrować to przepadło. Natomiast jeśli się zarejestrowałeś, to link dostępowy przyszedł Ci na maila i możesz dołączyć w każdym momencie :)
  • Odpowiedz
Zwierzenia Programisty Mieszkającego w Norwegii – Cała Prawda

▶️ Wielokrotnie byłem proszony o zrobienie materiału, który przybliży życie w Norwegii. W taki sposób, aby każdy mógł ocenić czy jest to kraj w którym warto żyć i pracować.

▶️ Przygotowałem bardzo treściwy materiał, który porusza najważniejsze aspekty życia – kultura, klimat, jedzenie, praca w zespołach służba zdrowia, urzędy i wiele innych, które dokładny obraz tego jak kształtują się perspektywy życia i pracy w Norwegii.

▶️
SoftBull - Zwierzenia Programisty Mieszkającego w Norwegii – Cała Prawda

▶️ Wielok...
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 1
@SoftBull: deszcz na południu, zależy jeszcze na którym, w Stavanger będzie go relatywnie więcej niż na skrajnym południu, nawet temperatura będzie inna u mnie niż u ciebie i to znacznie. Mówisz o rybach, warto by uściślić ze chodzi o ryby dzikie, hodowlane to porażka smakowa. Co do wędlin, zależy co kto woli. Polskie są zupełnie inne, używa się innych przypraw i zdecydowanie tych przypraw jest więcej. Tutaj już wchodzi przyzwyczajenie.
  • Odpowiedz
Moją publikację Spring Boot 2: LiveBook można jeszcze zamówić do 30 stycznia!

To skondensowana i łatwo przyswajalna pigułka wiedzy, która solidnie wprowadzi czytelnika w świat Spring Boot’a. To specjalnie zaprojektowana, lekka forma publikacji, która:
▶️ Pozbawiona jest nadmiernej narracji.
▶️ Skupia się tylko na najczęściej stosowanych i życiowych przypadkach.
▶️ Jest ultra cienka i liczy niecałe 250 stron.
SoftBull - Moją publikację Spring Boot 2: LiveBook można jeszcze zamówić do 30 styczn...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

▶️ Nowe frameworki JVM
▶️ Dlaczego Spring uznawany jest za problematyczny?
▶️ Kiedy i co nowego w nowego w Spring 6
▶️ Czego warto się uczyć i metody nauki ze mną!

O tym opowiadam w swoim ostatnim wykładzie. Dostęp otwarty jedynie do czwartku.
SoftBull - ▶️ Nowe frameworki JVM
▶️ Dlaczego Spring uznawany jest za problematyczny...
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirkasy,
potrzebuje łopatologicznego wyjaśnienia odnośnie działania tokenu JWT.
1. Na podstawie credentiali tworzymy token JWT.
2. Podpisany zostaje algorytmem RSA a więc mamy klucz prywatny i publiczny.

Teraz gdzie przechowujemy nasz klucz prywatny?
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@victordeleco2 Musi go albo mieć wprowadzony w procesie konfiguracji. Część standardów jak openid connect specyfikuje też format endpointa zawierającego informacje o wspieranych funkcjonalnościach oraz potrzebne klucze publiczne.
W każdym bądź razie musisz dostarczyć albo sam klucz publiczny albo namiary gdzie go szukać.
  • Odpowiedz
@Waffenek: Rozjaśniło mi się trochę. Stworzyłem sobie szybki projekt spring bootowy, gdzie generuje taki token JWT i pózniej przy kolejnych requestach dołączam go do headeru, odparsowuje i cos tam z niego biore. Dziękuje Ci za odpowiedzi, mega pomocne i wyczerpujące. Kolegom powyżej również.
  • Odpowiedz
Kurczę nie chcę mi się zbudować a w zasadzie uruchomić projekt na Spring Boocie i nie mogę dojść czego nie mam.

Wcześniej raz w życiu się bawiłem z Hibernate i wszystko śmigało. Mógłby ktoś zerknąć i rzucić radę, co zrobić, żeby to się prawidłowo skompilowało? Jakieś dodatkowe sources, których brakowało doinstalowałem.

Póki co jest to początek projektu, jedyne co, to połączyłem MySQL'a i ustawiłem properties i stworzyłem MainController, w którym wywołuje zwykły
Yakooo - Kurczę nie chcę mi się zbudować a w zasadzie uruchomić projekt na Spring Boo...

źródło: comment_1642896771kbH8lEfhlG7AEIkT0KRyis.jpg

Pobierz
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Yakooo: jak się aplikacja łączy z bazą to hibernate sobie ten dialekt ustawia, no a jak nie było połączenia z bazą, to hibernate błąd wywalał bo brakowało mu informacji
  • Odpowiedz
@Yakooo: Jak tak teraz po nocach siedzisz, to strach pomyśleć jak Cię do Sprintów Scrum Master zaprzęgnie :) Będziesz zasuwał elegancko na słupki. Widzę w Tobie potencjał na dobrego Java Developera.
  • Odpowiedz
Trendy w Springu w 2022

▶️ 24 stycznia o 19:00, spotykamy się na LiveStreamie, by wspólnie przyjrzeć się zmianą jakie nas czekają. Weźmiemy pod lupę też rynek pracy oraz nadchodzącym trendom w tym kierunku trendom.
▶️ Sprawdzimy zmiany, które nadchodzą w Springu i Spring Boot, zobaczymy czego jest rozsądnie się jest uczyć na ten moment.
▶️ Pokaże Ci też moje autorskie 3 drogi nauki Spring Boota ze mną!
▶️ Zapisz się na wydarzenie już teraz!
SoftBull - Trendy w Springu w 2022

▶️ 24 stycznia o 19:00, spotykamy się na LiveSt...
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Piszę apkę przy użyciu webflux, jednocześnie stosując DDD i mam zagwozdkę, mianowicie, w warstwie domenowej mam UserRepository, który później jest implementowane w warstwie infrastructure. Z racji tego, że webflux zakłada, że mamy posługiwać się Mono ~~i Flux ~~zastanawiam się czy UserRepository jako argument w metodach powinien przyjmować podstawowy obiekt czy może już na tym poziomie powinien przyjmować Mono~~. Dla przykładu:

public interface UserRepository {

Mono save(Mono user);
Mono findByUsername(Mono username);
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@FalscheFreunde: nie chodzi o DDD, tylko o rozsądek. Tak samo nie zaleca się przekazywać optionala jako argument: zazwyczaj lepiej zrobić check na zewnątrz a w środku metody zakładać, że wartość zawsze jest
  • Odpowiedz