Skillnad mellan JPA och Hibernate

JPA vs Hibernate

Nästan alla företagsapplikationer krävs för att få tillgång till relationsdatabaser regelbundet. Men ett problem som möter tidigare teknik (som JDBC) var impedansmatchningen (skillnaden mellan objektorienterad och relationell teknik). En lösning för detta problem infördes genom införandet av ett abstrakt lager som heter Persistence-lagret, vilket inkapslar databasåtkomst från affärslogiken. JPA (Java Persistence API) är en ram dedikerad för hantering av relationsdata (använder persistensskiktet) i Java-applikationer. Det finns många leverantörs implementeringar av JPA som används inom Java-utvecklaren. Hibernate är det mest populära sådana genomförandet av JPA (DataNucleus, EclipseLink och OpenJPA är några andra). Den senaste versionen av 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 hantering av relationsdata för Java. Den kan användas med applikationer som använder JSE (Java Platform, Standard Edition) eller JEE (Java Platform, Enterprise Edition). Den nuvarande versionen är JPA 2.0, som släpptes den 10 december 2009. JPA ersatte EJB 2.0 och EJB 1.1-enhetbönor (som starkt kritiserades för att vara tungviktiga av Java-utvecklaren). Fastän entitetsbönor (i EJB) tillhandahöll persistensobjekt användes många utvecklare för att utnyttja relativt lätta objekt som erbjuds av DAO (Data Access Objects) och andra liknande ramar istället. Som ett resultat infördes JPA, och det fångade många av de snygga dragen i de ovannämnda ramarna.

Persistens som beskrivs i JPA omfattar API (definierad i javax.persistence), JPQL (Java Platform, Enterprise Edition) och metadata som krävs för relationsobjekt. Status för en persistens enhet är vanligtvis kvar i en tabell. Instanser av en enhet motsvarar rader i tabellen i relationsdatabasen. Metadata används för att uttrycka relationerna mellan enheter. Annoteringar eller separata XML-beskrivningsfiler (distribuerade med programmet) används för att ange metadata i entitetsklasser. JPQL, som liknar SQL-frågor, används för att fråga om lagrade enheter.

Vad är Hibernate?

Viloläge är ett ramverk som kan användas för objektrelationell kartläggning avsedd för Java-programmeringsspråk. Mer specifikt är det ett ORM (objekt-relationellt kartläggning) bibliotek som kan användas för att kartlägga objektrelationsmodell i konventionell relationell modell. Enkelt uttryckt skapas en kartläggning mellan Java-klasser och tabeller i relationsdatabaser, även mellan Java och SQL-datatyper. Viloläge kan också användas för datafrågor och hämtning genom att generera SQL-samtal. Därför är programmeraren lättad från den manuella hanteringen av resultatuppsättningar och konvertering av objekt. Hibernate släpps som en fri och öppen källram som distribueras under GNU-licens. Ett genomförande för JPA API finns 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 hantering av relationsdata i Java-applikationer, medan Hibernate är en specifik implementering av JPA (så idealiskt kan inte JPA och Hibernate jämföras direkt). Med andra ord är Hibernate en av de mest populära ramarna som implementerar JPA. Hibernate implementerar JPA genom Hibernate Annotation and EntityManager-bibliotek som implementeras ovanpå Hibernate Core-bibliotek. Både EntityManager och Annotations följer livscykeln i Hibernate. Den senaste versionen av JPA-versionen (JPA 2.0) stöds fullt ut av Hibernate 3.5. JPA har fördelen att ha ett gränssnitt som standardiseras, så utvecklingssamhället blir mer bekant med det än Hibernate. Å andra sidan kan inbyggda Hibernate APIs anses mer kraftfulla eftersom dess funktioner är en superset av den för JPA.