Skillnaden mellan JPA och Hibernate

Skillnaden mellan JPA och Hibernate
Skillnaden mellan JPA och Hibernate

Video: Skillnaden mellan JPA och Hibernate

Video: Skillnaden mellan JPA och Hibernate
Video: Vad är skillnaden mellan komplext och komplicerat – Och varför bry sig 2024, November
Anonim

JPA vs Hibernate

Nästan alla företagsapplikationer krävs för att få tillgång till relationsdatabaser regelbundet. Men ett problem med tidigare teknologier (som JDBC) var impedansmissanpassningen (skillnaden mellan objektorienterad och relationsteknologi). En lösning på detta problem introducerades genom införandet av ett abstrakt lager kallat Persistence layer, som kapslar in databasåtkomst från affärslogiken. JPA (Java Persistence API) är ett ramverk avsett för hantering av relationsdata (med hjälp av persistensskiktet) i Java-applikationer. Det finns många leverantörsimplementeringar av JPA som används inom Java-utvecklargemenskapen. Hibernate är den mest populära implementeringen av JPA (DataNucleus, EclipseLink och OpenJPA är några andra). Den senaste JPA-versionen (JPA 2.0) stöds fullt ut av Hibernate 3.5, som släpptes i mars 2010.

Vad är JPA?

JPA är ett ramverk för att hantera relationsdata för Java. Den kan användas med applikationer som använder JSE (Java Platform, Standard Edition) eller JEE (Java Platform, Enterprise Edition). Dess nuvarande version är JPA 2.0, som släpptes den 10 december 2009. JPA ersatte EJB 2.0 och EJB 1.1 entity beans (som kritiserades hårt för att vara tunga av Java-utvecklargemenskapen). Även om entitetsbönor (i EJB) gav persistensobjekt, var många utvecklare vana vid att använda relativt lätta objekt som erbjuds av DAO (Data Access Objects) och andra liknande ramverk istället. Som ett resultat av detta introducerades JPA och den fångade många av de snygga funktionerna i ramverket som nämns ovan.

Persistens som beskrivs i JPA täcker API:et (definierat i javax.persistence), JPQL (Java Platform, Enterprise Edition) och metadata som krävs för relationsobjekt. Tillståndet för en persistensenhet är vanligtvis kvar i en tabell. Förekomster av en entitet motsvarar rader i tabellen i relationsdatabasen. Metadata används för att uttrycka relationerna mellan enheter. Anteckningar eller separata XML-deskriptorfiler (distribueras med applikationen) används för att specificera metadata i entitetsklasser. JPQL, som liknar SQL-frågor, används för att söka efter lagrade enheter.

Vad är Hibernate?

Hibernate är ett ramverk som kan användas för objektrelationell mappning avsedd för programmeringsspråket Java. Mer specifikt är det ett ORM-bibliotek (object-relational mapping) som kan användas för att mappa objektrelationell modell till en konventionell relationsmodell. Enkelt uttryckt skapar det en mappning mellan Java-klasser och tabeller i relationsdatabaser, även mellan Java till SQL-datatyper. Hibernate kan också användas för datasökning och hämtning genom att generera SQL-anrop. Därför är programmeraren befriad från manuell hantering av resultatuppsättningar och konvertering av objekt. Hibernate släpps som ett gratis ramverk med öppen källkod distribueras under GNU-licens. En implementering för JPA API tillhandahålls i Hibernate 3.2 och senare versioner. Gavin King är grundaren av Hibernate.

Vad är skillnaden mellan JPA och Hibernate?

JPA är ett ramverk för att hantera relationsdata i Java-applikationer, medan Hibernate är en specifik implementering av JPA (så idealiskt kan JPA och Hibernate inte jämföras direkt). Med andra ord är Hibernate ett av de mest populära ramverken som implementerar JPA. Hibernate implementerar JPA genom Hibernate Annotation- och EntityManager-bibliotek som är implementerade ovanpå Hibernate Core-bibliotek. Både EntityManager och Annotations följer livscykeln för Hibernate. Den senaste JPA-versionen (JPA 2.0) stöds fullt ut av Hibernate 3.5. JPA har fördelen av att ha ett gränssnitt som är standardiserat, så utvecklargemenskapen kommer att vara mer bekant med det än Hibernate. Å andra sidan kan inbyggda Hibernate-API:er anses vara mer kraftfulla eftersom dess funktioner är en superset av JPA:s.

Rekommenderad: