Hvad er JPA?
En JPA (Java Persistence API) er en specifikation af Java, som bruges til at få adgang til, administrere og bevare data mellem Java-objekt og relationsdatabase. Det betragtes som en standardtilgang til objektrelationel kortlægning.
JPA kan ses som en bro mellem objektorienterede domænemodeller og relationelle databasesystemer. Da det er en specifikation, udfører JPA ikke nogen handling af sig selv. Det kræver derfor implementering. Så ORM-værktøjer som Hibernate, TopLink og iBatis implementerer JPA-specifikationer for datapersistens.
Hvad er Hibernate?
En Hibernate er en Java-ramme, som bruges til at gemme Java-objekter i relationsdatabasesystemet. Det er et open source, let ORM (Object Relational Mapping) værktøj.
Hibernate er en implementering af JPA. Så det følger de fælles standarder, der er fastsat af Den Blandede Parlamentariske Forsamling.
Behov for JPA
Som vi har set indtil videre, er JPA en specifikation. Det giver fælles prototype og funktionalitet til ORM-værktøjer. Ved at implementere den samme specifikation følger alle ORM-værktøjer (som Hibernate, TopLink, iBatis) de fælles standarder. Hvis vi i fremtiden ønsker at skifte vores applikation fra et ORM-værktøj til et andet, kan vi gøre det nemt.
JPA vs. Hibernate
JPA | Gå i dvale |
---|---|
Java Persistence API (JPA) definerer håndteringen af relationelle data i Java-applikationerne. | Hibernate er et ORM-værktøj (Object-Relational Mapping), som bruges til at gemme Java-objektets tilstand i databasen. |
Det er blot en specifikation. Forskellige ORM-værktøjer implementerer det til datapersistens. | Det er en af de mest anvendte JPA-implementeringer. |
Det er defineret i javax.vedholdenhed pakke. | Det er defineret i org.dvale pakke. |
Det EntityManagerFactory interface bruges til at interagere med enhedsadministratorfabrikken for persistensenheden. Det giver således en enhedsadministrator. | Det bruger SessionFactory grænseflade til at oprette sessionsforekomster. |
Det bruger EntityManager grænseflade til at oprette, læse og slette operationer for forekomster af tilknyttede enhedsklasser. Denne grænseflade interagerer med persistenskonteksten. | Det bruger Session grænseflade til at oprette, læse og slette operationer for forekomster af tilknyttede enhedsklasser. Det opfører sig som en runtime-grænseflade mellem en Java-applikation og Hibernate. |
Det bruger Java Persistence Query Language (JPQL) som et objektorienteret forespørgselssprog til at udføre databaseoperationer. | Det bruger Dvale forespørgselssprog (HQL) som et objektorienteret forespørgselssprog til at udføre databaseoperationer. |