Java

Spring Boot – Spring Data JPA część II: Powiązania między tabelami

W pierwszej części postu, Spring Boot – Interakcja z bazą danych czyli Spring Data JPA, opisywałem jak się połączyć z bazą i jak stworzyć pierwszą encję. W tej części postaram się pokazać jak możemy zdefiniować powiązania pomiędzy encjami oraz jak możemy wykonywać zapytania z ich użyciem.

Czytaj więcejSpring Boot – Spring Data JPA część II: Powiązania między tabelami »

Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate

Od wersji 9.4 PostgreSQL oferuje nowy typ danych którym jest JSONB. Wcześniej w wersji 9.2 został wprowadzony typ JSON który przechowuje dane w tym formacie w wersji tekstowej. Wymagało to parsowania danych przed wykonaniem jakiejkolwiek operacji na nich. JSONB przechowuje zdekomponowane dane binarne, dzięki czemu mamy do nich szybszy dostęp. Dodatkowo możemy ich użyć do tworzenia indeksów, joinów itp.

Wygląda to bardzo pięknie i równie dobrze sprawdza się w praktyce, jednak Hibernate nie wspiera natywnie tego rodzaju pól. Można to jednak obejść tworząc własny typ danych oraz mówiąc mu jak może ten typ zserializować do formatu JSON. W tym poście przejdziemy przez proces tworzenia własnego typu.

Czytaj więcejWsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate »

Spring Boot Test – testowanie aplikacji w Spring Boocie

Testowanie naszych aplikacji jest bardzo ważne. Nie tylko dlatego, że pozwala znaleźć błędy, ale również pomagają w utrzymaniu kodu – daje pewność, że nie zepsuliśmy czegoś przy refaktoringu, dokumentuje użycie – można zaglądnąć do kodu testów aby dowiedzieć się jak używać jakiejś biblioteki, oraz pozwalaja na szybkie i łatwe sprawdzenie zachowania biblioteki/języka. Na przykład jeśli nie jesteśmy pewni co wywoła się pierwsze – konstruktor czy przypisanie do pola klasy – możemy stworzyć prosty kod który to sprawdzi i odpalić go w testach.

Czytaj więcejSpring Boot Test – testowanie aplikacji w Spring Boocie »

Spring Boot Web – Przekazywanie zmiennych do aplikacji przez URL czyli użycie @RequestParam i @PathVariable

W poprzednich wpisach pokazałem jak stworzyć prostą aplikację z pomocą Spring Boota. Dzisiaj chciałbym rozszeżyć tamten wpis o temat przekazywania zmiennych do aplikacji używając URL. Zakładam, że wiesz już jak stworzyć podstawowy szkielet działającej aplikacji, jeśli nie to zapraszam do przeczytania wpisu na ten temat pod adresem: http://blog.mloza.pl/spring-boot-szybkie-tworzenie-aplikacji-web-w-javie/.

W pierwszym poście na temat tworzenia aplikacji w Spring Boot pokazywałem jak możemy zmapować adres url na metodę w kontrolerze. Nie wspomniałem wtedy o tym, że możemy również w adresie zawrzeć parametry które mogą być przekazywane do naszej funkcji. Jest to bardzo użyteczne i szeroko wykorzystywane w aplikacjach. Przykładowo, możemy napisać metodę która ma za zadanie wyciągnać zawartość wpisu na blogu z bazy danych. Zamiast tworzyć oddzielne metody dla każdego wpisu i ręcznie je mapować, możemy stworzyć jedną metodę której będziemy przekazywać identyfikator wpisu. Na podstawie tego identyfikatora, metoda znajdzie odpowiedni wpis i zwróci go do przeglądarki.

Czytaj więcejSpring Boot Web – Przekazywanie zmiennych do aplikacji przez URL czyli użycie @RequestParam i @PathVariable »

Google Cloud Vision – czyli rozpoznawanie obrazów w chmurze, część 1: OCR

Google udostępniło API pozwalające na rozpoznawanie obrazów. W liście funkcjonalności możemy znaleźć wiele ciekawych pozycji:

  • Label Detection – kategoryzowanie zawartości obrazka, możemy otrzymać informację, że na obrazku znajduje się zwierzę,
  • Explicit Content Detection – wykrywanie nieodpowiedniej zawartości – takiej jak przemoc czy treści dla dorosłych
  • Logo Detection – wykrywa logo znanych marek,
  • Landmark Detection – wykrywanie znanych budowli,
  • Optical Character Recognition (OCR) – rozpoznawanie tekstu,
  • Face Detection – wykrywanie twarzy na zdjęciu,
  • Image Attributes – podaje informacje o obrazie, np. dominujący kolor

W tym poście pokażę jak skorzystać z rozpoznawania tekstu na przykładzie zdjęcia paragonu 🙂
Czytaj więcejGoogle Cloud Vision – czyli rozpoznawanie obrazów w chmurze, część 1: OCR »

Spring Security w Spring Boot

Często przygotowując aplikację webową chcemy posiadać sekcję która będzie dostępna tylko dla zalogowanych użytkowników lub jakiś panel administracyjny który pozwoli na zarządzanie stroną. Spring udostępnia gotowy mechanizm autentykacji i autoryzacji użytkowników z którego możemy w łatwy sposób skorzystać. W poście postaram się pokazać jak w najprostszy sposób skonfigurować autentykację, czyli logowanie użytkownika do systemu. Kod który używam jest możliwie jak najprostszy, pomijam tutaj używanie widoków i innych komponentów skupiając się tylko na tym co jest niezbędne do rozpoczęcia pracy z security.

Czytaj więcejSpring Security w Spring Boot »

Spring Boot – Widoki

W poprzednich postach pisałem jak zacząć przygodę ze Spring Bootem oraz jak się połączyć z bazą danych. Dotychczas dane do przeglądarki zwracane były jako stringi. Jak już pewnie się domyślasz istnieją lepsze sposoby aby ładnie zaprezentować nasze dane, a do tego oddzielić logikę aplikacji od prezentacji.

Spring wspiera różne technologie widoków. Od tradycyjnych JSP(http://pl.wikipedia.org/wiki/JavaServer_Pages), do Themyleaf (http://www.thymeleaf.org/), Twig (http://twig.sensiolabs.org/, implementacja dla Javy JTWIG: http://jtwig.org/), FreeMarker, Groovy czy Velocity.

Widoki JSP mają kilka znanych ograniczeń, przez co powinny być unikane. Osobiście lubię widoki TWIG dlatego skupie się na nich, inne silniki szablonów implementuje się w analogiczny sposób.

Kod źródłowy gotowego projektu można znaleźć pod adresem: https://github.com/mloza/spring-boot-views

Czytaj więcejSpring Boot – Widoki »

Spring Boot – Interakcja z bazą danych czyli Spring Data JPA

W poprzednim poście pokazującym jak zacząć ze Spring Bootem pokazałem jak stworzyć Hello World dla aplikacji web. Przyszedł czas aby do naszą aplikację połączyć z bazą danych. Będzie nam potrzebne kilka rzeczy:

  • Baza danych
  • Model – klasy POJO z adnotacjami które będą reprezentować schemat bazy danych (więcej o tym za chwilę)
  • Repozytoria – Klasy lub interfejsy które będą definiowały operacje które można wykonać na modelu (takie jak zapisanie obiektu w bazie, wyszukiwanie obiektów itp)

Mogą tutaj pojawić się elementy projektu które pokazywałem w poprzednim poście więc zachęcam do jego przeczytania. Zacznijmy po kolei.

Czytaj więcejSpring Boot – Interakcja z bazą danych czyli Spring Data JPA »