JPA kontra Hibernacja
Co to jest JPA?
JPA (Java Persistence API) to specyfikacja języka Java używana do uzyskiwania dostępu do danych, zarządzania nimi i utrzymywania ich między obiektem Java a relacyjną bazą danych. Jest uważane za standardowe podejście do mapowania obiektowo-relacyjnego.
JPA można postrzegać jako pomost pomiędzy obiektowymi modelami domen a systemami relacyjnych baz danych. Będąc specyfikacją, JPA nie wykonuje samodzielnie żadnej operacji. Wymaga więc wdrożenia. Dlatego narzędzia ORM, takie jak Hibernate, TopLink i iBatis, implementują specyfikacje JPA dotyczące trwałości danych.
Co to jest hibernacja?
Hibernacja to framework Java używany do przechowywania obiektów Java w systemie relacyjnej bazy danych. Jest to lekkie narzędzie ORM (Object Relational Mapping) o otwartym kodzie źródłowym.
Hibernacja jest implementacją JPA. Jest zatem zgodny ze wspólnymi standardami dostarczonymi przez WZP.
Potrzeba WZP
Jak widzieliśmy do tej pory, JPA jest specyfikacją. Zapewnia wspólny prototyp i funkcjonalność narzędziom ORM. Implementując tę samą specyfikację, wszystkie narzędzia ORM (takie jak Hibernate, TopLink, iBatis) działają zgodnie ze wspólnymi standardami. W przyszłości, jeśli będziemy chcieli przenieść naszą aplikację z jednego narzędzia ORM na drugie, możemy to zrobić bez problemu.
JPA kontra Hibernacja
| JPA | Hibernować |
|---|---|
| Java Persistence API (JPA) definiuje zarządzanie danymi relacyjnymi w aplikacjach Java. | Hibernate to narzędzie do mapowania obiektowo-relacyjnego (ORM), które służy do zapisywania stanu obiektu Java w bazie danych. |
| To tylko specyfikacja. Różne narzędzia ORM implementują go w celu zapewnienia trwałości danych. | Jest to jedna z najczęściej używanych implementacji JPA. |
| Jest zdefiniowany w javax.persistence pakiet. | Jest zdefiniowany w org.hibernate pakiet. |
| The Fabryka EntityManager interfejs służy do interakcji z fabryką menedżerów encji dla jednostki trwałości. W ten sposób zapewnia menedżera podmiotu. | To używa Fabryka sesji interfejs do tworzenia instancji sesji. |
| To używa Menedżer jednostek interfejs do tworzenia, odczytywania i usuwania operacji dla instancji mapowanych klas jednostek. Interfejs ten współdziała z kontekstem trwałości. | To używa Sesja interfejs do tworzenia, odczytywania i usuwania operacji dla instancji mapowanych klas jednostek. Zachowuje się jak interfejs wykonawczy pomiędzy aplikacją Java a Hibernacją. |
| To używa Język zapytań o trwałość Java (JPQL) jako obiektowy język zapytań do wykonywania operacji na bazach danych. | To używa Język zapytań hibernacji (HQL) jako obiektowy język zapytań do wykonywania operacji na bazach danych. |