Różnica między JPA a Hibernacją

JPA vs Hibernacja

Prawie wszystkie aplikacje korporacyjne są wymagane do regularnego dostępu do relacyjnych baz danych. Problemem napotykanym we wcześniejszych technologiach (takich jak JDBC) było niedopasowanie impedancji (różnica między technologiami obiektowymi a relacyjnymi). Rozwiązanie tego problemu wprowadzono poprzez wprowadzenie warstwy abstrakcyjnej zwanej warstwą trwałości, która hermetyzuje dostęp do bazy danych z logiki biznesowej. JPA (Java Persistence API) to platforma dedykowana do zarządzania relacyjnymi danymi (przy użyciu warstwy trwałej) w aplikacjach Java. Istnieje wiele implementacji JPA od dostawców używanych w społeczności programistów Java. Hibernacja jest najbardziej popularną taką implementacją JPA (DataNucleus, EclipseLink i OpenJPA to niektóre inne). Najnowsza wersja JPA (JPA 2.0) jest w pełni obsługiwana przez Hibernację 3.5, która została wydana w marcu 2010 roku.

Co to jest JPA?

JPA to platforma do zarządzania relacyjnymi danymi dla Java. Może być używany z aplikacjami wykorzystującymi JSE (Java Platform, Standard Edition) lub JEE (Java Platform, Enterprise Edition). Jego aktualna wersja to JPA 2.0, która została wydana 10 grudnia 2009 r. JPA zastąpiła komponenty EJB 2.0 i EJB 1.1 (które zostały ostro skrytykowane za bycie ciężkim przez społeczność programistów Java). Chociaż komponenty bean (w EJB) zapewniały obiekty trwałości, wielu programistów było przyzwyczajonych do wykorzystywania stosunkowo lekkich obiektów oferowanych przez DAO (Data Access Objects) i inne podobne struktury. W rezultacie wprowadzono JPA, które uchwyciło wiele schludnych cech wyżej wymienionych ram.

Trwałość opisana w JPA obejmuje API (zdefiniowane w javax.persistence), JPQL (Java Platform, Enterprise Edition) i metadane wymagane dla obiektów relacyjnych. Stan jednostki trwałości jest zwykle utrwalany w tabeli. Instancje encji odpowiadają wierszom tabeli relacyjnej bazy danych. Metadane służą do wyrażania relacji między jednostkami. Adnotacje lub oddzielne pliki deskryptorów XML (wdrażane z aplikacją) służą do określania metadanych w klasach jednostek. JPQL, który jest podobny do zapytań SQL, służy do tworzenia zapytań do przechowywanych jednostek.

Co to jest hibernacja?

Hibernacja to platforma, której można używać do mapowania obiektowo-relacyjnego przeznaczonego dla języka programowania Java. Mówiąc dokładniej, jest to biblioteka ORM (mapowanie obiektowo-relacyjne), której można użyć do mapowania modelu relacyjno-obiektowego na konwencjonalny model relacyjny. Mówiąc najprościej, tworzy mapowanie między klasami Java i tabelami w relacyjnych bazach danych, również między typami danych Java na SQL. Hibernacji można także używać do wysyłania zapytań i pobierania danych przez generowanie wywołań SQL. Dlatego programista jest zwolniony z ręcznej obsługi zestawów wyników i konwertowania obiektów. Hibernate jest wydany jako darmowy i open source framework dystrybuowany na licencji GNU. Implementacja interfejsu API JPA jest dostępna w Hibernacji 3.2 i nowszych wersjach. Gavin King jest założycielem Hibernacji.

Jaka jest różnica między JPA a Hibernacją?

JPA jest strukturą do zarządzania danymi relacyjnymi w aplikacjach Java, podczas gdy Hibernacja jest specyficzną implementacją JPA (więc idealnie JPA i Hibernacja nie mogą być bezpośrednio porównywane). Innymi słowy, Hibernacja jest jedną z najpopularniejszych platform implementujących JPA. Hibernacja implementuje JPA poprzez biblioteki adnotacji Hibernacji i EntityManager, które są implementowane na bibliotekach Hibernacji Rdzenia. Zarówno EntityManager, jak i Adnotacje są zgodne z cyklem życia Hibernacji. Najnowsza wersja JPA (JPA 2.0) jest w pełni obsługiwana przez Hibernate 3.5. Zaletą JPA jest ustandaryzowany interfejs, więc społeczność programistów będzie go lepiej znać niż Hibernacja. Z drugiej strony natywne interfejsy API Hibernacji można uznać za bardziej wydajne, ponieważ jego funkcje są nadzbiorem funkcji JPA.