Kurs Spring

Hibernate - Szybki wstęp

W niemal każdym programie mamy bazę danych, a w niej tabele. Tabele mają pola określonego typu, a do tego wiążą się w relacje między sobą. Relacje występują w postaci jeden do jednego, jeden do wiele i wiele do wielu. Na bazie danych wykonujemy zapytania typu DDL (Data Definition Language), które odpowiadają za tworzenie i modyfikowanie struktur przechowujących dane, na przykład CREATE, DROP, ALTER itp.

W przypadku gdy mamy już stworzone tabele, potrzebujemy jeszcze rozwiązania do pracy z danymi. W tym celu używamy zapytań typu DML (Data Manipulation Language). Zapytaniami pochodzącymi z tej grupy są: SELECT, INSERT, UPDATE i DELETE. Dzięki nim możemy wprowadzać dane do bazy, modyfikować je oraz pobierać i usuwać.

Tak to w skrócie wygląda jeśli pracujemy bezpośrednio na bazie i operujemy na niej zapytaniami SQL. Z drugiej strony, w programie Java używamy obiektów i to na nich wykonujemy algorytmy i to one przechowują oraz transportują nasze dane. Wypadałoby jakoś te dwa światy połączyć. I tu z pomocą przychodzi warstwa ORM, czyli warstwa mapowania obiektowo-relacyjnego. Może ona być obsługiwana przez różne frameworki, ale my oczywiście zajmiemy się sprawdzonym i niezwykle popularnym rozwiązaniem, jakim jest Hibernate.

Baza danych a Hibernate

Korzystając z frameworka w dużej mierze używamy adnotacji. Adnotacje są powszechnym elementem występującym w Springu, ale jeśli zaczynasz dopiero z nim swoją przygodę - i nieco przewrotnie postanowiłeś zacząć od Hibernate'a - to przypominamy:
Appa Notka. Adnotacja to fragment tekstu zaczynający się od znaku @, na przykład: @Component, @Service. Definicja mówi, że reprezentuje ona metadane, czyli dodatkowe informacje o kodzie źródłowym. Dzięki temu kod taki może być nieco krótszy, bardziej czytelny, a przez to wygodniejszy w użyciu. Niektóre adnotacje są dostępne już w trakcie kompilacji (compile-time), a inne dopiero podczas działania programu (runtime).

Stosując adnotacje możemy opisać kod tak, by zdefiniować jakich zachowań od niego oczekujemy lub też jakie cechy powinien przyjąć. Na przykład oznaczając klasę adnotacją @Component wymuszamy na Springu stworzenie obiektu i umieszczenie go w kontenerze, przez co mamy do niego dostęp w niemalże każdym miejscu programu.

Adnotacje mogą zawierać elementy - nazwane lub nie oraz wartości dla tych elementów, na przykład: @Table(name = "items"). Jeśli adnotacja posiada tylko jeden element value lub posiada value oraz inne elementy, ale mają one określoną wartość domyślną, wtedy nazwa elementu - value może być pominięta, na przykład @SuppressWarnings("unchecked"). Natomiast jeśli adnotacja nie ma w ogóle elementów lub wszystkie z nich mają wartości domyślne wtedy nawet nawiasy mogą być usunięte, na przykład: @Override, @SpringBootApplication.
Jak to się ma teraz do Hibernate'a? Jakich adnotacji możesz się spodziewać i co dzięki nim osiągniesz?


Podstawową adnotacją w Hibernate jest adnotacja @Entity, która mówi nam, że obiekt danej klasy reprezentuje rekord w tabeli w bazie danych. Najczęściej stosujemy ją w parze z adnotacją @Table, w której podajemy nazwę tabeli obsługiwanej przez tę encję. Nie możemy też zapomnieć o zdefiniowaniu klucza głównego dla naszej tabeli, więc wprowadzamy adnotację @Id:
@Entity
@Table(name = "items")
public class Item { 
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(unique = true, nullable = false)
    private Long id;
    
    ...           
To co jeszcze widzisz na powyższym przykładzie, to określenie sposobu generacji identyfikatorów - @GeneratedValue oraz definicja kolumny odpowiadającej polu - @Column. Skoro ma to być identyfikator, to powinien być zawsze ustawiony i musi być unikalny, stąd też powyższe ustawienia unique i nullable. Skąd one się biorą w tym nawiasie?

Otóż, tak jak wspomnieliśmy nieco wyżej, adnotacje dają możliwość określania dodatkowych elementów i tak na przykład wspomniana adnotacja @Column pozwala na ustawienie wartości elemntów unique, nullable, name, length i jeszcze kilku innych. Będziemy do tego tematu wracać omawiając kolejne encje z projektu przygotowanego na rzecz tego kursu.

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE