Vad är JPA?
En JPA (Java Persistence API) är en specifikation av Java som används för att komma åt, hantera och bevara data mellan Java-objekt och relationsdatabas. Det anses vara en standardmetod för objektrelationell kartläggning.
JPA kan ses som en brygga mellan objektorienterade domänmodeller och relationsdatabassystem. Eftersom det är en specifikation utför JPA ingen operation av sig själv. Det kräver alltså implementering. Så ORM-verktyg som Hibernate, TopLink och iBatis implementerar JPA-specifikationer för databeständighet.
Vad är Hibernate?
En Hibernate är ett Java-ramverk som används för att lagra Java-objekten i relationsdatabassystemet. Det är ett lättviktigt ORM-verktyg (Object Relational Mapping) med öppen källkod.
Hibernate är en implementering av JPA. Så den följer de gemensamma standarder som tillhandahålls av den gemensamma parlamentariska församlingen.
Behov av JPA
Som vi har sett hittills är JPA en specifikation. Det ger gemensamma prototyper och funktionalitet till ORM-verktyg. Genom att implementera samma specifikation följer alla ORM-verktyg (som Hibernate, TopLink, iBatis) de vanliga standarderna. Om vi i framtiden vill byta vår applikation från ett ORM-verktyg till ett annat kan vi göra det enkelt.
JPA vs Hibernate
JPA | Övervintra |
---|---|
Java Persistence API (JPA) definierar hanteringen av relationsdata i Java-applikationerna. | Hibernate är ett verktyg för objektrelationell kartläggning (ORM) som används för att spara Java-objektets tillstånd i databasen. |
Det är bara en specifikation. Olika ORM-verktyg implementerar det för databeständighet. | Det är en av de mest använda JPA-implementeringen. |
Det definieras i javax.persistence paket. | Det definieras i org.hibernate paket. |
De EntityManagerFactory gränssnittet används för att interagera med enhetshanterarens fabrik för persistensenheten. Det ger alltså en enhetschef. | Det använder SessionFactory gränssnitt för att skapa sessionsinstanser. |
Det använder EntityManager gränssnitt för att skapa, läsa och ta bort operationer för instanser av mappade entitetsklasser. Detta gränssnitt interagerar med persistenskontexten. | Det använder Session gränssnitt för att skapa, läsa och ta bort operationer för instanser av mappade entitetsklasser. Det fungerar som ett körtidsgränssnitt mellan en Java-applikation och Hibernate. |
Det använder Java Persistence Query Language (JPQL) som ett objektorienterat frågespråk för att utföra databasoperationer. | Det använder Viloläge frågespråk (HQL) som ett objektorienterat frågespråk för att utföra databasoperationer. |