Testcontainers to narzędzie, które ułatwi Ci zarządzanie kontenerami baz danych w trakcie wykonywania testów integracyjnych.

Już nie musisz tworzyć instancji bazy danych (ręcznie czy z wykorzystaniem Dockera), bo Testcontainers zrobi to za Ciebie!

Cała praca z testami integracyjnymi sprowadza się jedynie do jednego kliknięcia!

A jak to skonfigurować w aplikacji Spring Bootowej pokazuje we fragmencie mojego ostatniego Liva na temat najlepszych narzędzi pomagających w utrzymaniu projektów!

#programowanie #naukaprogramowania #java #backend #technologia #
SoftBull - Testcontainers to narzędzie, które ułatwi Ci zarządzanie kontenerami baz d...
@SoftBull: używałem swego czasu docker compose rule. Sztywne yamle z infrastrukturą się nie sprawdzały, więc je generowaliśmy, odpalaliśmy podzbiór systemu, testowaliśmy i sprzątaliśmy
▶️ Liquibase - System kontroli wersji dla baz danych
Poznaj Liqubase – narzędzie do zarządzania i stosowania zmian w schematach baz danych. Naucz się tworzyć profesjonalne środowiska wdrożeniowe i poznaj sposoby przez, które Liquibase wyręczy Cię z wielu manualnych działań.
✅Poznasz najlepsze o najczęściej zachowywane praktyki przy wykorzystaniu tego narzędzia.
✅Dowiesz się jak konfigurować środowiska wdrożeniowe z wykorzystaniem baz danych.
✅Pokaże Ci najlepszy sposób, na uruchamianie testów integracyjnych z wykorzystaniem Springa, Dockera
SoftBull - ▶️ Liquibase - System kontroli wersji dla baz danych
 Poznaj Liqubase – n...
@SoftBull: przecież tego jest masa w sieci, jeśli to ma być wprowadzenie do liquibase od zera to chyba szkoda czasu, może lepiej byłoby skupić się na jakichś szczegółach, ciekawostkach, popularnych problemach liquibase, pułapkach, o może porównanie liquibase vs. flyway, ale nie na zasadzie, że tu xmle, tu sqle, tylko tak praktycznie w życiu, różnice w działaniu, porównanie na różnych systemach db, porównanie we wsparciu dla usług chmurowych etc.? :)

Tak, żeby
@SoftBull: a nie myślałeś np. o jakimś tekstowym wprowadzeniu przed live? Jakiś krótki artykuł, linki do dokumentacji, link do projektu, który będzie używany i jakieś zadanko żeby samemu poćwiczyć? Wtedy kto potrzebuje, to sam może się przygotować z podstaw. Do tego ewentualnie jakiś discord, gdzie każdy w razie gdyby samodzielnie nie podołał z przygotowaniem się do live, będzie mógł zapytać innych.
Byłem kiedyś na jednym Twoim live bo zaciekawiła mnie tematyka,
Czy wiesz, że ❓❓❓
Mechanizm Proxy ma zastosowanie w między innymi w takich obszarach jak:
▶️Programowanie zorientowane aspektowo
▶️Testowania i mockowanie
▶️Tworzenie zabezpieczeń
A Spring bardzo dobrze o tym wie, dlatego wiele mechanik jest właśnie uzależnione od Proxy!
✅ O tym wszystkim właśnie mówię, we fragmencie mojego ostatniego Live - gdzie pokazuje praktyczne zastawania wzorca Proxy!

#programowanie #naukaprogramowania #java #backend #technologia #informatyk #ciekawostki #jvm #byczazagroda #framework #spring #kariera #springboot
SoftBull - Czy wiesz, że ❓❓❓ 
Mechanizm Proxy ma zastosowanie w między innymi w taki...
▶️ Transakcje w Spring Boot!

Jeśli jeszcze raz chcesz przejść przed zasady działania transakcji, oraz przykładów jej wykorzystania, to zachęcam Cię do przeczytania mojego ostatniego artykułu.

Przybliża on działanie transakcji i porusza teoretyczne aspekty jakie pojawiły się w moim ostatnim Live - Spring Data – Transakcje, Izolacje i Propagacje.

https://bykowski.pl/transakcje-w-spring-boot/

#programowanie #naukaprogramowania #java #backend #technologia #informatyk #ciekawostki #jvm #byczazagroda #framework #spring #kariera #springboot #bazydanych
▶️ Mechanizm Proxy w Spring Boot

Temat który bardzo ożywił i zainteresował Widzów ostatniego Live (którego framgnet możesz zobaczyć na YT). Dlatego koniecznie trzeba omówić w jaki sposób Spring tworzy obiekty Proxy oraz zarządza nimi w cyklu życia aplikacji!

✅Poznasz w jaki sposób IOC container wykorzystuje wzorzec Proxy oraz jak wygląda podział odpowiedzialności pomiędzy Proxy Object i Proxied Object.
✅Spring wykorzystuje dwie implementacje Proxy. Pokażę Ci wady oraz zalety każdej
SoftBull - ▶️ Mechanizm Proxy w Spring Boot

Temat który bardzo ożywił i zaintereso...

źródło: comment_1649385808P3eN014PEFetiUkx1zFzw7.jpg

Pobierz
▶️ Transakcje w Spring Boot
Jedna z kluczowych rzeczy, która często pomijana jest w procesie nauki. A pominiecie jej wiąże się z częstymi problemami w utrzymywaniu systemów wykorzystujących bazy danych.

Dlatego jeśli chcesz poszerzyć swoją wiedzę i w 1,5h zyskać ogromny zastrzyk merytoryki na temat:
✅zbiorze właściwości ACID,
✅jak działają transakcje,
✅sposobach izolacji transakcji,
✅poziomach izolacji transakcji,
✅jaki wpływ ma dobór bazy danych na działanie transakcji,
✅co się stanie jeśli nie dodamy
@YourDoom: xd, no dobra masz mnie^^ Wyszedłem z mało precyzyjnego założenia -> żeby rozumieć moje materiały, to trzeba już w programowanie ogarniać.. więc jeśli ktoś jest ze mną przez 1,5h nie znając programowania, to nie wiem czemu... no ale nie wykluczone, że może być i tak :D
Cześć! Mam coś dla Was - od Mirka dla Mireczków.
Przebieg rozmowy kwalifikacyjnej wraz z listą pytań na stanowisko Java Developera na różnych poziomach.
Co prawda lista pytań nie jest aż tak hardcorowa jaką niedawno dostał jeden z juniorów tutaj, jednak na pewno pozwoli to dojść do pewnych wniosków.

https://bykowski.pl/jak-aktualnie-wygladaja-rekrutacje-programistow/

#programista15k #programowanie #java #pracait #pracbaza #naukaprogramowania #backend #technologia #informatyk #ciekawostki #jvm #byczazagroda #framework #spring #kariera #springboot #bazydanych
Jak połączyć w spring data jpa:
projection + specification + pageable + własne @query + nie może być problemu n+1.

Projekcja, bo nie potrzebuję wszystkiego.
Specyfikacje pozwolą uniknąć ręcznego pisana warunków w where.
Pageable żeby podzielić wynik na strony i nie przeciążać serwera.
@query żeby można było w każdej chwili coś zmienić

Dodam, że po drodze jest 5 zagnieżdżonych tabel przez złączenia z których chce wyciągnąć informacje.

No i musi być jakieś
Otwarte Szkolenie Live: Transakcje w Spring Boot

Poznaj transakcje, rodzaje izolacji i propagacji, oraz jakie problemy one rozwiązują w cyklu tworzenia aplikacji internetowych z wykorzystaniem baz danych!

W trakcie szkolenia Live połączonym z LiveCodingiem:
✅ Poznasz zbiór właściwości ACID i jego rolę przy tworzeniu aplikacji
✅ Opowiem Ci transakcjach oraz poziomach izolacji transakcji
✅ Na przykładach w kodzie pokażę Ci jak zarządzać transakcjami wykorzstując do tego mechanizm propagacji

⏰ Słyszymy się 28
SoftBull - Otwarte Szkolenie Live: Transakcje w Spring Boot 

 Poznaj transakcje, r...
@ArcadiusK: nie wiem czy tutaj powód jest ten sam, ale spotkałem się już z takimi praktykami, miało to na celu zebrać grupę możliwie najwierniejszych klientów, którzy z większym prawdopodobieństwem kupią płatne materiały. Czyli zbieranie klientów na jakość, a nie ilość.

Jeśli film masz tylko na żywo i nie ma możliwości go obejrzeć ponownie, to tworzy to takie złudzenie, że jest to jakiś elitarny materiał tylko dla wybranych i jednocześnie w zasadzie
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ń

✨️ Dla wszystkich, którzy nie zdążyli się załapać na szkolenie - dobra informacja! Jutro (10/03/2022
SoftBull - Mamy to! Aż 329 programistów wzięło udział w moim wczorajszym, otwartym sz...

źródło: comment_1646848290DsISPfER2qBuZ1BeZibRIz.jpg

Pobierz
➡️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ą
✅ Wykonamy bardziej zaawansowane zapytania JPA

⏰ Słyszymy się 07 marca o 19:00! Całość szkolenia zajmie nam
SoftBull - ➡️Szkolenie Spring Data⬅️

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

źródło: comment_1646412757VHibgenklaKigA4pdy6wxo.jpg

Pobierz
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.

1. Pominąć id, zrobić union, sortować po dacie utworzenia?
2. Do każdej tabeli dodać kolumnę z id które będzie unikalne w całej bazie i skryptem dopisać do istniejących wierszy.

#spring #
@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
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);
}

No i co bym nie robił, nie mogę przejść testu jednostkowego. W zależności czy używam @PathVariable czy @RequestParam dostaję HTTP 500 albo HTTP 400. Zwracanie na chama HttpStatus.NO_CONTENT też nie pomaga xD
arct2 - Hej mirki, mam debilny problem: 
robię sobie zadanko z hyperskill.org, w któ...

źródło: comment_16455688064x5zhyrjmjQPNZpn6bB8ex.jpg

Pobierz
@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ś.
➡️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.

⏰ Całość szkolenia zajęła nam blisko 1,5h i
SoftBull - ➡️Szkolenie Spring MVC⬅️
Ponad 350 programistów - uwagę tylu osób udało m...

źródło: comment_1645558167nqfGpQNCRuAKNoffsqeCKc.jpg

Pobierz
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 committed.

Tam gdzie nie trzeba nic zwracać to można dać do kolejki i tyle.
Są jednak przypadki, że endpoint
@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.
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