Hibernacija i JPA

Anonim

Java aplikacije tradicionalno koriste tehnologije poput JDBC (Java Database Connectivity) za pristup relacijskim bazama podataka kako bi se podaci pohranili uporno. Glavni problem bio je razlika između objektno orijentiranih i relacijskih tehnologija. JDBC API zahtijevao je programerima da ručno kodiraju najprimitivnije CRUD (stvaranje, čitanje, ažuriranje i brisanje) operacija u SQL-u koji nisu imali prenosivost.

Dodatno, kôd je potpuno ovisan o SQL-u, što nije standardna specifikacija za relacijske baze podataka, što bi otežalo prijelaz iz baze podataka u drugu. Problem je da je relacijska tehnologija usredotočena na podatke i njezin odnos, dok se objektno orijentirana paradigma naglašava ne samo na podacima nego i na operacijama koje se izvode na njemu. To rezultira u neusklađenosti objekta i relacijske impedancije. Jedno dobro prihvaćeno rješenje je objektno-relacijsko mapiranje (ORM).

Što je hibernacija?

Hibernacija je ORM (Object / Relational Mapping) okvir za Java programski jezik koji se bavi upoznavanjem podataka. To je jednostavno open-source rješenje za mapiranje objekta i relacija koja mapira Java klase u tablice baze podataka u relacijskim bazama podataka i od Java do SQL vrsta podataka. To je lagani ORM okvir distribuiran pod GNU licencom koji ima za cilj pružiti programerima transparentan mehanizam za postizanje ustrajnosti. Koristi snažan jezik upita slično SQL-u nazvanom HQL (kratica za Hibernate Query Language) koji se brzo integrira s postojećim i novim aplikacijama bez promjene ostatka aplikacije. Osim toga, to je u potpunosti u skladu s objektno orijentiranim pojmovima kao što su nasljeđivanje, polimorfizam i povezanost. A najbolji dio, on ne zahtijeva da mijenjate klasu aplikacija kako biste postigli upornost.

Što je JPA?

Java Perzistence API (JPA) je specifikacija koja opisuje sučelje za mapiranje objekta i relacije te trajno upravljanje objektom. Osim definicije API-ja, definira skup pravila i smjernica o tome kako implementirati objektno relacijsko mapiranje i kako napraviti ove specifikacije u skladu sa svim pružateljima JPA. Hibernacija je najnaprednija i najčešće primijenjena ORM implementacija JPA smjernica. JPA jednostavno pruža objekt / relacijsku mapu platformu za upravljanje podacima između Java objekata / klasa i relacijske baze podataka u Java aplikacijama. Ima specifikaciju sučelja namijenjene dobavljačima implementacije JPA za izradu standarda za implementaciju ORM-a kako bi se ciljao na zahtjeve sloja za pristup podacima visokih performansi. Hibernacija je najpopularniji JPA prodavač.

Razlika između hibernacije i JPA

Osnove hibernacije i JPA

JPA, kratica za API Java Persistence, je specifikacija za pristup, upravljanje i izdržavanje podataka u aplikacijama pomoću Java platforme, standardnog izdanja (Java, SE) i Java platforme, Enterprise Edition (Java, EE). Hibernacija, s druge strane, više je alat za ORM implementaciju koja je u skladu s JPA specifikacijama.

Svrha hibernacije i JPA

JPA je specifikacija za objektno-relacijsko mapiranje u Java koja omogućuje programerima da obavljaju operacije baze podataka mnogo brže i učinkovitije time omogućujući jednostavnu interakciju s bazama podataka. To je standardni API za upornost i objekt relacijske mapiranje pružajući nekoliko prednosti za programere za podatke obvezujuće operacije. Hibernacija je alat za relacijsko mapiranje objekata otvorenog izvora koji pojednostavljuje razvoj Java aplikacija kako bi se povezivanje s bazama podataka olakšalo nego ikad.

Pouzdanost hibernacije i JPA

Problem s JPA je da je to samo specifikacija koja ne pruža nikakve klase implementacije. API je samo skup klasa i metoda za pohranu podataka uporno u bazu podataka prema određenom skupu pravila i propisa koje treba slijediti JPA dobavljači. Hibernacija je jedan od mnogih proizvođača implementacije JPA koji implementira JPA specifikaciju u bilo kojem okruženju koje podržava JPA, uključujući Java SE i Java EE aplikacijske poslužitelje.

Značajke u stanju hibernacije i JPA

Osim što je najpopularniji dobavljač implementacije JPA, Hibernate okvir zadržava svoj izvorni API za promicanje kompatibilnosti unatrag, kao i prilagodbu ne-standardnih značajki. Hibernacija dolazi s nekoliko značajki koje nisu podržane od strane Java Perzistence API-ja, kao što su generatori proširenog identifikatora, novi datum i vrijeme API, ponovljive napomene, rezultate upita u paru, prilagodljive CRUD izjave, nepromjenjive entitete, podršku prirodnim ID-ovima, ad hoc pridruživanje nepovezanih entiteta, itd.

EntityManager vs Session

EntityManager je standard za implementaciju JPA specifikacije koji je isti u svim implementacijama. Naprotiv, ako želite upotrijebiti Hibernate API, tada biste koristili Hibernate specifičnu sesiju za rješavanje upornosti. Međutim, nećete se moći preseliti na novog dobavljača ako odlučite upotrebljavati Sesiju jer je ograničen na Hibernacije API-ja.

Hibernacija vs. JPA: usporedna tablica

Sažetak hibernacije vs. JPA

Gotovo sve poslovne aplikacije trebaju neki način za pohranu podataka uporno. To je od vitalnog značaja za poslovne aplikacije zbog potrebnog pristupa relacijskim bazama podataka.Upornost je temeljni koncept u razvoju aplikacija i izazov je sam po sebi zbog potrebe da se hijerarhijski strukturirane Java objekte pretvore u bazu podataka na način koji je brz i učinkovit. Dok je upornost već bila vruća tema rasprave u Java zajednici, mnogi programeri neće se ni složiti oko opsega problema. U kontekstu predmetno orijentiranog jezika, upornost znači da su podaci i dalje dostupni i nakon što je proces koji je stvorio završio. Postoji mnogo načina za pohranu podataka uporno. Hibernacija je jedan takav projekt koji ima za cilj pružiti cjelovito rješenje problema upornosti u Java, dok JPA je specifikacija za upravljanje trajnim podacima i objektno-relacijskim mappingima.