Verschil tussen JPA en Hibernate

Anonim

JPA vs Hibernate

Bijna alle bedrijfsapplicaties zijn verplicht om regelmatig databases met betrekking tot relaties te openen. Maar een probleem waarmee vroeger technologieën werden geconfronteerd (zoals JDBC) was de impedantie mismatch (verschil tussen object-oriented en relationele technologieën). Een oplossing voor dit probleem werd geïntroduceerd door de introductie van een abstracte laag genaamd Persistence layer, die de database toegang uit de bedrijfslogica inkapselt. JPA (Java Persistence API) is een kader dat is bestemd voor het beheer van relational data (gebruik van de persistentie laag) in Java applicaties. Er zijn veel leveranciers implementaties van JPA gebruikt binnen de Java ontwikkelaar gemeenschap. Hibernate is de meest populaire dergelijke implementatie van JPA (DataNucleus, EclipseLink en OpenJPA zijn een aantal andere). De nieuwste JPA versie (JPA 2.0) wordt volledig ondersteund door Hibernate 3. 5, die in maart 2010 werd uitgebracht.

Wat is JPA?

JPA is een kader voor het beheren van relationele data voor Java. Het kan gebruikt worden met toepassingen die gebruik maken van JSE (Java Platform, Standard Edition) of JEE (Java Platform, Enterprise Edition). De huidige versie is JPA 2. 0, die op 10 december 2009 werd vrijgegeven. JPA vervangde EJB 2.0 en EJB 1. 1 entiteitsbonen (die zwaar werden bekritiseerd door zwaargewicht door de Java Developer Community). Hoewel entiteitsbonen (in EJB) persistentieobjecten verstrekken, werden veel ontwikkelaars gebruikt om relatief lichte objecten die door DAO (Data Access Objects) en andere soortgelijke kaders worden aangeboden, te gebruiken. Als gevolg daarvan werd de JPA geïntroduceerd, en werd veel van de nette kenmerken van de bovengenoemde kaders vastgelegd.

De persistentie zoals omschreven in JPA omvat de API (gedefinieerd in javax persistentie), JPQL (Java Platform, Enterprise Edition) en metagegevens die nodig zijn voor relatieobjecten. Staat van een persistentie-entiteit wordt doorgaans volhouden in een tafel. Instellingen van een entiteit komen overeen met rijen van de tabel van de relationele database. Metagegevens worden gebruikt om de relaties tussen entiteiten uit te drukken. Annotaties of afzonderlijke XML-descriptorbestanden (ingezet bij de toepassing) worden gebruikt om metagegevens in entiteitsklassen te specificeren. JPQL, die vergelijkbaar is met SQL-query's, worden gebruikt om opgeslagen entiteiten te zoeken.

Wat is Hibernate?

Hibernate is een kader dat kan worden gebruikt voor object-relationele mapping die bedoeld is voor Java-programmeertaal. Meer specifiek is het een ORM (object-relationele mapping) bibliotheek die kan worden gebruikt om object-relationeel model in conventioneel relationeel model te plassen. In eenvoudige termen creëert het een mapping tussen Java-lessen en tabellen in relationele databases, ook tussen Java naar SQL-datatypes. Hibernate kan ook worden gebruikt voor het vragen en ophalen van gegevens door het genereren van SQL-oproepen.Daarom wordt de programmeur ontheven van de handmatige verwerking van resultaat sets en omzetten van objecten. Hibernate wordt vrijgegeven als een gratis en open source kader dat onder GNU licentie wordt verdeeld. Een implementatie voor de JPA API wordt geleverd in Hibernate 3. 2 en later versies. Gavin King is de oprichter van Hibernate.

Wat is het verschil tussen JPA en Hibernate?

JPA is een kader voor het beheren van relationele data in Java-applicaties, terwijl Hibernate een specifieke implementatie van JPA is (zo ideaal kan de JPA en Hibernate niet direct worden vergeleken). Met andere woorden, Hibernate is een van de meest populaire raamwerken die JPA implementeert. Hibernate implementeert JPA via Hibernate Annotation en EntityManager bibliotheken die worden geïmplementeerd bovenop Hibernate Core bibliotheken. Zowel EntityManager als Annotations volgen de levenscyclus van Hibernate. De nieuwste JPA-versie (JPA 2.0) wordt volledig ondersteund door Hibernate 3. 5. JPA heeft het voordeel van een gestandaardiseerde interface, zodat de ontwikkelaarsgemeenschap beter bekend zal zijn dan Hibernate. Aan de andere kant kunnen inheemse Hibernate API's worden beschouwd als krachtiger, omdat de eigenschappen ervan een superset zijn van die van JPA.