JPA i Hibernate #2 - ORM, JPA i Hibernate

JPA #2 – ORM, JPA i Hibernate

Na warsztat trafia ORM, JPA i Hibernate w ramach cyklu Fundamenty JPA i Hibernate. Co kryje się za skrótem ORM i JPA i właściwie czym jest Hibernate?

W ekosystemie Javy w temacie persystencji danych mamy takie trzy najpopularniejsze hasła – dwa skróty i jedną nazwę framework’a – ORM, JPA i Hibernate.

Object-Relational Mapping

ORM to (Object-Relational Mapping) Mapowanie Obiektowo-relacyjne, w którym chodzi o to, że paradygmant obiektowy w relacyjnych bazach danych nie zawsze można odwzorować jeden do jednego. Innymi słowy – nie zawsze wszystkie nasze obiekty z aplikacji da się łatwo przenieść do bazy danych. Nie zawsze też jest to pożądane.

Object - Relational Mapping odwzorowanie jeden do jednego
Object – Relational Mapping odwzorowanie jeden do jednego

Powyżej widzisz prosty obiekt z Name i Age, który łatwo przenieść do tabeli w bazie danych. W tym wypadku wrzucamy cały obiekt jako kolejny wiersz tabeli. Pole Name ląduje w kolumnie Name, pole Age w kolumnie Age.

Natomiast już nie tak prosto odwzorować to w tabeli gdy w grę wchodzą interfejsy, abstrakcje, wielopoziomowe dziedziczenie i gdy relacje są trochę bardziej skomplikowane.

Podam przykład takiej skomplikowanej relacji, żeby łatwiej było sobie uświadomić skalę trudności.

Mamy klasy Rezerwacja, która posiada dwa obiekty Gość i zarezerwowany Pokój. Rezerwacja może mieć odnośnik do Gość i odnośnik do Pokój. Tak powiązane obiekty ORM przekłada na trzy tabele: Rezerwacja, Gość i Pokój, które są połaczone ze soba wzajemnymi relacjami. Może też mieć połączenie w Javie w drugą stronę – Gość może mieć połaczenie z aktualną Rezerwacją. Tak samo Pokój – może mieć podpiętą aktualną Rezerwację lub aktualnego Gościa. Takich połączeń, które w świecie obiektowym są dosyć proste, logiczne i popularne jest wiele. By przedstawić je jasno w świecie relacyjnym potrzebujemy wielu dodatkowych tabel, wielu dodatkowych kolumn itd. Już przy problemach średniego rozmiaru staje się to bardzo skomplikowane, a co dopiero w większej skali.

Skrót ORM nie jest natywny dla Javy – w każdym języku programowania mamy jakiegoś ORMa. Jest to ogólne określenie bibliotek, które zarządzają mapowaniem obiektów na relacyjne bazy danych.

Java Persistence API

Natomiast przechodząc już stricte do świata Javy natykamy się na JPA (Java Persistence API). Jest to konkretny standard dla Javy, który ma dokładnie określać przebieg komunikacja między programem w Java i bazą danych, jak ma przebiegać mapowanie itd.

JPA to tylko standard – tak na prawdę tylko zbiór interfejsów, które mówią jakie metody maja być zaimplementowane. Określa, jakie one mają parametry, co mają zwracać i robić. Natomiast potrzebujemy implementacji tego standardu i tu wchodzi Hibernate.

Hibernate

Hibernate to biblioteka czyli implementacja standardu JPA. Nie jest to jedyna implementacja jednak jest bez wątpienia najpopularniejsza. Ponad to ma wiele dodatkowych funkcjonalności, które w standardzie JPA nie są określone – na przykład posiada zestaw funkcji, które służą do komunikacji z bazą NoSQLową. Standard JPA tego nie określa, bo on zajmuje się tylko komunikacją z relacyjnymi bazami danych.

Podsumowanie

Relacja pomiędzy ORM, JPA a Hibernate
Relacja pomiędzy ORM, JPA a Hibernate

ORM – (Object-Relational Mapping) to ogólne określenie bibliotek, które zarządzają mapowaniem obiektów na relacyjne bazy danych, nie jest natywny dla Javy.

JPA – (Java Persistence API) to konkretny standard dla Javy, który ma dokładnie określać przebieg komunikacja między aplikacją i bazą danych.

Hibernate – to biblioteka czyli implementacja standardu JPA.

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

Jedna myśl w temacie “JPA #2 – ORM, JPA i Hibernate”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *