678 Stimmen

Was ist der Unterschied zwischen JPA und Hibernate?

Ich verstehe, dass JPA 2 eine Spezifikation und Hibernate ein Werkzeug für ORM ist. Ich verstehe auch, dass Hibernate mehr Funktionen hat als JPA 2. Aber was ist aus praktischer Sicht wirklich der Unterschied?

Ich habe Erfahrung mit iBatis und jetzt versuche ich, entweder Hibernate oder JPA2 zu lernen. Ich habe das Buch Pro JPA2 in die Hand genommen und es verweist immer wieder auf den "JPA-Provider". Zum Beispiel:

Wenn Sie der Meinung sind, dass eine Funktion standardisiert werden sollte, sollten Sie sich zu Wort melden. und fordern Sie sie bei Ihrem JPA-Anbieter an

Das verwirrt mich, deshalb habe ich ein paar Fragen:

  • Mit JPA2 allein kann ich Daten aus der DB abrufen, indem ich einfach meine POJOs annotiere
  • Soll JPA2 mit einem "JPA-Provider", z. B. TopLink oder Hibernate, verwendet werden? Wenn ja, welche Vorteile bietet die Verwendung von JPA2 + Hibernate im Vergleich zu JPA2 allein oder im Vergleich zu Hibernate allein?
  • Können Sie ein gutes praktisches JPA2-Buch empfehlen? "Pro JPA2" scheint eher eine Bibel und ein Nachschlagewerk für JPA2 zu sein (es geht erst in der zweiten Hälfte des Buches auf Abfragen ein). Gibt es ein Buch, das einen Problem/Lösungsansatz für JPA2 bietet?

1voto

JPA ist nur eine Spezifikation, die konkret umgesetzt werden muss. Die von Oracle bereitgestellte Standardimplementierung ist jetzt "Eclipselink". Toplink wird von Oracle an die Eclipse Foundation gespendet, um mit Eclipselink zu verschmelzen.

Durch die Verwendung von Eclipselink kann man sicher sein, dass der Code bei Bedarf auf jede beliebige Implementierung übertragbar ist. Hibernate ist auch eine vollständige JPA-Implementierung + MEHR. Hibernate ist ein Super-Set von JPA mit einigen zusätzlichen Hibernate-spezifischen Funktionen. Daher kann es sein, dass eine in Hibernate entwickelte Anwendung beim Wechsel zu einer anderen Implementierung nicht kompatibel ist. Dennoch wird Hibernate von der Mehrheit der Entwickler als JPA-Implementierung gewählt und weithin verwendet.

Eine weitere JPA-Implementierung ist OpenJPA, die eine Erweiterung der Kodo-Implementierung ist.

JPA gegenüber Hibernate

1voto

rajiv baghel Punkte 29

Ich versuche, das mit einfachen Worten zu erklären.

Angenommen, Sie brauchen ein Auto, wie wir alle wissen, gibt es mehrere A-Klasse-Hersteller wie MERCEDES, BMW, AUDI usw.

Jetzt in der obigen Aussage CAR (ist eine Spezifikation) als jedes Auto haben gemeinsame Merkmale wie etwas mit 4 Rädern und kann auf der Straße gefahren werden ist Auto ... so seine wie JPA. Und MERCEDES, BMW, AUDI usw. verwenden nur gemeinsame Auto-Funktion und fügen Funktionalität nach ihrer Kundenbasis, so dass sie die Auto-Spezifikation wie Hibernate, iBATIS usw. implementieren.

So durch diese gemeinsamen Funktionen geht zu Jpa und Hibernate ist nur eine Implementierung nach ihrer Jboss benötigen.

1 weitere Sache

JPA enthält einige grundlegende Eigenschaften, so dass Sie in Zukunft, wenn Sie Hibernate auf eine andere Implementierung umstellen möchten, einfach und ohne viel Kopfzerbrechen wechseln können, und für diese grundlegenden Eigenschaften sind JPA-Annotationen enthalten, die für jede Implementierungstechnologie, JPQL-Abfragen, funktionieren können.

Daher implementieren wir Hibernate hauptsächlich mit der JPA-Technologie für den Fall, dass wir unsere Implementierung je nach Bedarf des Kunden umstellen wollen, und Sie schreiben weniger Code, da einige allgemeine Funktionen in JPA enthalten sind. Wenn jemand noch nicht klar, dann können Sie kommentieren, wie ich m neu auf Stack Overflow.

Dankeschön

0voto

Kumar-Sandeep Punkte 172

JPA ist nur eine Spezifikation, während Hibernate einer der JPA-Anbieter ist, d.h. Hibernate implementiert verschiedene Dinge, die im JPA-Vertrag erwähnt werden.

0voto

Amit Gujarathi Punkte 1022

JPA oder Java Persistence API ist eine Standardspezifikation für ORM-Implementierungen, während Hibernate die eigentliche ORM-Implementierung oder das Framework ist.

-1voto

Mr.DevEng Punkte 4376

JPA ist die Java Persistence API. Sie legt nur die Spezifikationen für APIs fest. Das bedeutet, dass der Satz von Regeln und Richtlinien für die Erstellung der APIs. Wenn es in einem anderen Kontext gesagt wird, ist es ein Satz von Standards, der den Wrapper für die Erstellung dieser APIs bereitstellt, der für den Zugriff auf Entitätsobjekte aus Datenbanken verwendet werden kann. JPA wird von Oracle zur Verfügung gestellt. Wenn wir auf eine Datenbank zugreifen wollen, brauchen wir auf jeden Fall seine Implementierung. Das bedeutet, dass JPA nur Richtlinien für die Implementierung von APIs festlegt. Hibernate ist ein JPA-Anbieter, der für die Implementierung dieser APIs verantwortlich ist. Hibernate TopLink und Open JPA sind einige Beispiele für JPA-API-Anbieter. Wir verwenden also die von JPA spezifizierten Standard-APIs über Hibernate.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X