Spring Data JPA with Spring Boot – really fast start

Jakiś czas temu zrobiłem wstęp do Spring Boot. Nadeszła pora aby pójść krok dalej i rozpocząć persystencje danych w relacyjnej bazie danych z jego pomocą. Persystencje? Dla niektórych brzmi to groźnie, niezrozumiale. Oznacza to zapis danych w ściśle określony sposób, w zdefiniowanych strukturach. Jest to niezwykle łatwe i szybkie dzięki starterom dostarczanym przez Spring Boota.Aby zacząć wystarczy dodać zależność:

a ponieważ użyjemy podejścia code first potrzebujemy jeszcze jakąś bazę danych. Ponieważ nie skupiamy się na uprzednim przygotowaniu schematu użyjemy bazy in-memory H2, która jest fajnie wspierana przez Spring Boot  Developer tools. Aby wykorzystać ten silnik bazodanowy nie musimy niczego instalować, wystarczy dodanie zależności do projektu:

oraz dodanie w application.properties wpisu:

Dzięki temu po wejściu w przeglądarce na poniższy URL oraz zalogowaniu się

mamy dostęp do bazy danych:

Zdefiniujmy sobie teraz naszą pierwszą encję:

Adnotacja @Id oznacza klucz główny w naszej tabeli natomiast @GeneratedValue odpowiada za automatyczne generowanie wartości klucza. Domyślna nazwa kolumny jest ustawiana na podstawie nazwy pola, możemy customizować to poprzez parametr “name” w adnotacji @Column.

Podczas definiowania encji możemy wykorzystywać adnotacje validatora takie jak @NotNull, @NotEmpty, @Size, @Min itd.

Pora teraz na trochę magii Springa. Definiując swoje repozytorium rozszerzamy inferfejs Repository lub CrudRepository. Użycie tego drugie daje nam gotowe metody dla CRUD’a co pozwala na zaoszczędzenie czasu podczas implementacji.

Kolejnym ułatwieniem jest definiowanie zapytań poprzez odpowiednie nazywanie metod w repozytorium. W powyższym przykładzie znajduje się metoda findByFirstName. Jest ona odpowiednikiem zapytania w sql:

Oczywiście nadal możemy używać składni sql do budowania zapytań ale musimy użyć do tego adnotacji @Query nad wybraną metodą .

Zapytanie budowane poprzez nazwę metody mogą być bardziej skomplikowane, oraz mogą przyjmować więcej parametrów dowolnego typu. Po szczegóły odsyłam do dokumentacji.

Na koniec kilka linków do poczytania :

Leave a Reply

Your email address will not be published. Required fields are marked *