Forskellen mellem JPA og Hibernate

Forskellen mellem JPA og Hibernate
Forskellen mellem JPA og Hibernate

Video: Forskellen mellem JPA og Hibernate

Video: Forskellen mellem JPA og Hibernate
Video: Женская Стрижка на средние волосы Каскад Сэссон Пошагово | Уроки стрижек Евы Лорман 2024, Juli
Anonim

JPA vs Hibernate

Næsten alle virksomhedsapplikationer er påkrævet for at få adgang til relationelle databaser regelmæssigt. Men et problem med tidligere teknologier (såsom JDBC) var impedansmismatchet (forskel mellem objektorienterede og relationelle teknologier). En løsning på dette problem blev introduceret gennem introduktionen af et abstrakt lag kaldet Persistence layer, som indkapsler databaseadgang fra forretningslogikken. JPA (Java Persistence API) er en ramme dedikeret til styring af relationelle data (ved hjælp af persistence-laget) i Java-applikationer. Der er mange leverandørimplementeringer af JPA, der bruges i Java-udviklerfællesskabet. Hibernate er den mest populære sådan implementering af JPA (DataNucleus, EclipseLink og OpenJPA er nogle andre). Den nyeste JPA-version (JPA 2.0) er fuldt understøttet af Hibernate 3.5, som blev udgivet i marts 2010.

Hvad er JPA?

JPA er en ramme til administration af relationelle data til Java. Det kan bruges med applikationer, der bruger JSE (Java Platform, Standard Edition) eller JEE (Java Platform, Enterprise Edition). Dens nuværende version er JPA 2.0, som blev udgivet den 10. december 2009. JPA erstattede EJB 2.0 og EJB 1.1 entity beans (som blev stærkt kritiseret for at være tunge af Java-udviklerfællesskabet). Selvom entity beans (i EJB) gav persistensobjekter, var mange udviklere vant til at bruge relativt lette objekter, der blev tilbudt af DAO (Data Access Objects) og andre lignende rammer i stedet. Som et resultat blev JPA introduceret, og den fangede mange af de pæne funktioner i de ovennævnte rammer.

Persistence som beskrevet i JPA dækker API'en (defineret i javax.persistence), JPQL (Java Platform, Enterprise Edition) og metadata, der kræves til relationelle objekter. Tilstanden for en persistensenhed er typisk fastholdt i en tabel. Forekomster af en enhed svarer til rækker i tabellen i relationsdatabasen. Metadata bruges til at udtrykke relationerne mellem enheder. Annoteringer eller separate XML-deskriptorfiler (implementeret med applikationen) bruges til at specificere metadata i enhedsklasser. JPQL, der ligner SQL-forespørgsler, bruges til at forespørge på lagrede enheder.

Hvad er Hibernate?

Hibernate er en ramme, der kan bruges til objektrelationel kortlægning beregnet til Java-programmeringssprog. Mere specifikt er det et ORM-bibliotek (object-relational mapping), der kan bruges til at kortlægge objekt-relationel model til en konventionel relationel model. Enkelt sagt skaber det en mapping mellem Java-klasser og tabeller i relationelle databaser, også mellem Java til SQL-datatyper. Hibernate kan også bruges til dataforespørgsel og hentning ved at generere SQL-kald. Derfor er programmøren fritaget for den manuelle håndtering af resultatsæt og konvertering af objekter. Hibernate er udgivet som en gratis og open source-ramme distribueret under GNU-licens. En implementering til JPA API leveres i Hibernate 3.2 og senere versioner. Gavin King er grundlæggeren af Hibernate.

Hvad er forskellen mellem JPA og Hibernate?

JPA er en ramme til styring af relationelle data i Java-applikationer, mens Hibernate er en specifik implementering af JPA (så ideelt set kan JPA og Hibernate ikke sammenlignes direkte). Med andre ord er Hibernate en af de mest populære rammer, der implementerer JPA. Hibernate implementerer JPA gennem Hibernate Annotation- og EntityManager-biblioteker, der er implementeret oven på Hibernate Core-biblioteker. Både EntityManager og Annotations følger livscyklussen for Hibernate. Den nyeste JPA-version (JPA 2.0) er fuldt understøttet af Hibernate 3.5. JPA har fordelen af at have en grænseflade, der er standardiseret, så udviklerfællesskabet vil være mere fortrolig med det end Hibernate. På den anden side kan native Hibernate API'er anses for at være mere kraftfulde, fordi dens funktioner er et supersæt af JPA's.

Anbefalede: