JPA vs Hibernate
Nesten alle bedriftsapplikasjoner kreves for å få tilgang til relasjonsdatabaser regelmessig. Men et problem med tidligere teknologier (som JDBC) var impedansmisforholdet (forskjellen mellom objektorienterte og relasjonsteknologier). En løsning på dette problemet ble introdusert gjennom introduksjonen av et abstrakt lag k alt Persistence layer, som innkapsler databasetilgang fra forretningslogikken. JPA (Java Persistence API) er et rammeverk dedikert for administrasjon av relasjonsdata (ved hjelp av persistens-laget) i Java-applikasjoner. Det er mange leverandørimplementeringer av JPA som brukes i Java-utviklerfellesskapet. Hibernate er den mest populære slike implementeringen av JPA (DataNucleus, EclipseLink og OpenJPA er noen andre). Den nyeste JPA-versjonen (JPA 2.0) støttes fullt ut av Hibernate 3.5, som ble utgitt i mars 2010.
Hva er JPA?
JPA er et rammeverk for å administrere relasjonsdata for Java. Den kan brukes med applikasjoner som bruker JSE (Java Platform, Standard Edition) eller JEE (Java Platform, Enterprise Edition). Den nåværende versjonen er JPA 2.0, som ble utgitt 10. desember 2009. JPA erstattet EJB 2.0 og EJB 1.1 enhetsbønner (som ble sterkt kritisert for å være tunge av Java-utviklermiljøet). Selv om entitetsbønner (i EJB) ga utholdenhetsobjekter, var mange utviklere vant til å bruke relativt lette objekter som tilbys av DAO (Data Access Objects) og andre lignende rammeverk i stedet. Som et resultat ble JPA introdusert, og den fanget opp mange av de pene funksjonene i rammeverket nevnt ovenfor.
Persistence som beskrevet i JPA dekker API (definert i javax.persistens), JPQL (Java Platform, Enterprise Edition) og metadata som kreves for relasjonsobjekter. Tilstanden til en utholdenhetsenhet er vanligvis opprettholdt i en tabell. Forekomster av en enhet tilsvarer rader i tabellen i relasjonsdatabasen. Metadata brukes til å uttrykke relasjonene mellom enheter. Merknader eller separate XML-deskriptorfiler (distribuert med applikasjonen) brukes til å spesifisere metadata i enhetsklasser. JPQL, som ligner på SQL-spørringer, brukes til å forespørre lagrede enheter.
Hva er dvalemodus?
Hibernate er et rammeverk som kan brukes til objektrelasjonell kartlegging beregnet på Java programmeringsspråk. Mer spesifikt er det et ORM-bibliotek (object-relational mapping) som kan brukes til å kartlegge objektrelasjonell modell til konvensjonell relasjonsmodell. Enkelt sagt skaper det en kartlegging mellom Java-klasser og tabeller i relasjonsdatabaser, også mellom Java til SQL-datatyper. Hibernate kan også brukes til dataspørring og henting ved å generere SQL-kall. Derfor er programmereren lettet fra manuell håndtering av resultatsett og konvertering av objekter. Hibernate er utgitt som et gratis og åpen kildekode-rammeverk distribuert under GNU-lisens. En implementering for JPA API leveres i Hibernate 3.2 og senere versjoner. Gavin King er grunnleggeren av Hibernate.
Hva er forskjellen mellom JPA og Hibernate?
JPA er et rammeverk for å administrere relasjonsdata i Java-applikasjoner, mens Hibernate er en spesifikk implementering av JPA (så ideelt sett kan JPA og Hibernate ikke sammenlignes direkte). Med andre ord, Hibernate er et av de mest populære rammeverkene som implementerer JPA. Hibernate implementerer JPA gjennom Hibernate Annotation- og EntityManager-bibliotekene som er implementert på toppen av Hibernate Core-bibliotekene. Både EntityManager og Annotations følger livssyklusen til Hibernate. Den nyeste JPA-versjonen (JPA 2.0) støttes fullt ut av Hibernate 3.5. JPA har fordelen av å ha et grensesnitt som er standardisert, så utviklerfellesskapet vil være mer kjent med det enn Hibernate. På den annen side kan native Hibernate API-er betraktes som kraftigere fordi funksjonene er et supersett av JPA.