Diferența dintre JPA și Hibernate

JPA vs Hibernate

Aproape toate aplicațiile enterprise sunt necesare pentru a accesa periodic bazele de date relaționale. Dar o problemă cu care se confruntă tehnologiile anterioare (cum ar fi JDBC) a fost nepotrivirea impedanței (diferența dintre tehnologiile orientate pe obiecte și relaționale). O soluție pentru această problemă a fost introdusă prin introducerea unui strat abstract numit strat de Persistență, care încapsulează accesul la baze de date din logica de afaceri. JPA (Java Persistence API) este un cadru dedicat pentru gestionarea datelor relaționale (utilizând stratul de persistență) în aplicațiile Java. Există multe implementări de furnizori ale APP care sunt utilizate în comunitatea de dezvoltatori Java. Hibernatul este cea mai populară implementare a JPA (DataNucleus, EclipseLink și OpenJPA sunt altele). Cea mai nouă versiune JPA (JPA 2.0) este pe deplin susținută de Hibernate 3.5, lansat în martie 2010.

Ce este JPA?

JPA este un cadru pentru gestionarea datelor relaționale pentru Java. Acesta poate fi folosit cu aplicații care utilizează JSE (Java Platform, Standard Edition) sau JEE (Platformă Java, Enterprise Edition). Versiunea sa actuală este JPA 2.0, care a fost lansată pe 10 decembrie 2009. JPA a înlocuit fasolea entităților EJB 2.0 și EJB 1.1 (care au fost foarte criticate pentru că au fost grele de către comunitatea de dezvoltatori Java). Deși fasolea entității (în EJB) a furnizat obiecte de persistență, mulți dezvoltatori au fost utilizați pentru a utiliza obiecte relativ ușoare oferite în schimb de DAO (Data Access Objects) și alte cadre similare. Ca rezultat, AJP a fost introdusă și a capturat multe dintre trăsăturile caracteristice ale cadrelor menționate mai sus.

Persistența descrisă în JPA acoperă API-ul (definit în javax.persistence), JPQL (Platforma Java, Enterprise Edition) și metadatele necesare obiectelor relaționale. Statul unei entități de persistență este de obicei persistent într-un tabel. Instanțele unei entități corespund rândurilor din tabelul bazei de date relaționale. Metadatele sunt utilizate pentru a exprima relațiile dintre entități. Adnotările sau fișierele descriptive XML separate (implementate împreună cu aplicația) sunt utilizate pentru a specifica metadatele din clasele entităților. JPQL, care este similar cu interogările SQL, este folosit pentru interogarea entităților stocate.

Ce este hibernarea?

Hibernate este un cadru care poate fi folosit pentru maparea obiect-relațională destinată limbajului de programare Java. Mai precis, este o bibliotecă ORM (mapare obiect-relațională) care poate fi utilizată pentru a cartografia modelul obiect-relațional în modelul relațional convențional. În termeni simpli, creează o mapare între clase Java și tabele în baze de date relaționale, de asemenea între tipurile de date Java și SQL. Hibernate poate fi, de asemenea, utilizat pentru interogarea și recuperarea datelor prin generarea de apeluri SQL. De aceea, programatorul este eliberat de manevrarea manuală a seturilor de rezultate și de convertirea obiectelor. Hibernate este lansat ca un cadru gratuit și open source, distribuit sub licență GNU. O implementare pentru API JPA este furnizată în Hibernate 3.2 și versiuni ulterioare. Gavin King este fondatorul Hibernate.

Care este diferența dintre JPA și Hibernate?

JPA este un cadru pentru gestionarea datelor relaționale în aplicațiile Java, în timp ce Hibernate este o implementare specifică a JPA (deci, în mod ideal, JPA și Hibernate nu pot fi comparate direct). Cu alte cuvinte, Hibernate este unul dintre cele mai populare cadre care implementează APP. Hibernate implementează JPA prin adnotări Hibernate și biblioteci EntityManager implementate în partea superioară a bibliotecilor Hibernate Core. Atât EntityManager, cât și Adnotările urmează ciclul de viață al Hibernate. Cea mai nouă versiune JPA (JPA 2.0) este pe deplin suportată de Hibernate 3.5. JPA are avantajul de a avea o interfață care este standardizată, astfel încât comunitatea dezvoltatorilor va fi mai familiarizată cu aceasta decât Hibernate. Pe de altă parte, API-urile Hibernate native pot fi considerate mai puternice, deoarece caracteristicile lor sunt o suprasetare a celor ale JPA.