JPA i HIbernate #1 - Czym jest persystencja

JPA #1 – Czym jest persystencja?

W cyklu Fundamenty JPA i Hibernate ruszamy z wyjaśnieniem podstawowych pojęć. Dziś na warsztat trafia pojęcie persystencji. Czym ona jest? Czy jest potrzebna? Co to oznacza? Zacznijmy od tego czym w ogóle jest persystencja

Gdzie żyją dane…

Gdy mamy aplikację napisaną w praktycznie dowolnym języku ma ona kawałek pamięci przeznaczony do jej dyspozycji. Na tym kawałku pamięci zapisywane są wszelkiego rodzaju zmienne, obiekty i generalnie wszystkie dane, z których aplikacja korzysta.

Przykładem posłuży mi program w notacji Javascript:

JPA aplikacja a pamięć programu
Działanie aplikacji na wydzielonej części pamięci

W momencie gdy tylko zamkniemy naszą aplikację ten kawałek pamięci przeznaczony dla niej jest czyszczony i używany przez inne procesy. Gdy znowu wystartujemy nasz program, który w tym miejscu sobie zapisał obiekt “Paweł” no to niestety – tego obiektu już nie będzie. Pamięć została wyczyszczona i zaczynamy od zera.

W czym pomoże persystencja?

No i tutaj do akcji wkracza persystencja danych czyli persystowanie, zapisywanie danych na stałe gdzieś na zewnątrz naszego programu. Takim najprostrzym przykładem persystencji są pliki.

Na przykład na koniec działania naszego programu bierzemy wszystkie nasze obiekty, które mamy w pamięci i wrzucamy do pliku – czy to w postaci JSON, CSV lub dowolnym innym formacie. Gdy uruchamiamy aplikację to pierwsze co wczytuje to dane z pliku do pamięci.

Bazy danych – miejsce na nasze dane

Takim bardziej powszechnym i profesjonalnym sposobem na przechowywanie bardziej zaawansowanych danych jest trzymanie ich w bazach danych.

Baza danych jest to specjalny (najczęściej zewnętrzny, ale też nie zawsze) program, który służy tylko i wyłącznie temu aby nasze dane nam przechowywać. Możemy ich tam mieć na prawdę ogromne ilości.

Bazy danych
Bazy danych

Relacyjne bazy danych są oparte właśnie o model tabelowy i o relacje między nimi. Dodatkowo wspierają one komunikację z bazą za pomocą jezyka zapytań SQL. Ten schemat jest i będzie wykorzystywany w przeważającej liczbie większych aplikacji.

Są również nierelacyjne bazy danych – nie posiadające sztywnego schematu danych tzw. NoSQLowe. Tam na przyklad wrzucane są dane bezpośrednio w postaci JSONowej. Inne, bardziej specjalistyczne bazy NoSQLowe, specjalizują się w przechowywaniu i operacjach na danych trzymanych w formie grafu albo np. do przetrzymywania koordynatów geograficznych.

Natomiast najpopularniejszym modelem jest i przez dziesięciolecia pozostanie model trzymania danych w relacyjnych bazach danych, takich które wspierają język zapytań SQL.

Flow danych w naszej aplikacji

Nasza aplikacja komunikuje się na bieżąco z bazą danych, gdzie dane są zapisywane, odczytywane, wymazywane, aktualizowane itd.

Dane, które odczytamy sobie z bazy danych wrzucamy na krótszy lub dłuższy czas do pamięci. Tam możliwa jest praca na nich.

Podsumowanie

W pamięci trzymamy dane, które są teraz używane. Do bazy danych zapisujemy dane, które chcemy przechować. Gdy nasza aplikacja wstaje, wysyłamy odpowiednie zapytanie do bazy danych i dostajemy odpowiedni zestaw danych, który nas interesuje.

Schemat przypływu danych pomiędzy aplikacją a bazą danych i pamięcią
Schemat przypływu danych pomiędzy aplikacją a bazą danych i pamięcią

Tak więc persystencja danych – zapisywanie danych na zewnątrz naszego programu. Przykładami takiego działania jest zapisywanie danych do bazy danych (najpopularniejsze) lub do pliku.

By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.


Informacje oparte zostały o materiał darmowego kursu wprowadzającego w świat JPA i Hibernate “Fundamenty JPA i Hibernate” dostępnego w formie wideo na platformie ClockworkJava.

Pozostałe artykuły z cyklu:

  1. Czym jest persystencja?
  2. ORM, JPA i Hibernate
  3. Podstawowe elementy
  4. Konfiguracja projektu
  5. Pierwsza encja
  6. Create
  7. Read
  8. Update
  9. Delete
  10. Relacja One-to-One
  11. Relacja One-to-Many

3 myśli w temacie “JPA #1 – Czym jest persystencja?”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *