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?

4voto

javierZanetti Punkte 258

Während JPA die Spezifikation darstellt, ist Hibernate der Implementierungsprovider, der die in der Spezifikation festgelegten Regeln befolgt.

3voto

Java - seine Unabhängigkeit ist nicht nur vom Betriebssystem, sondern auch vom Hersteller.

Deshalb müssen Sie sollte sein die Möglichkeit, Ihre Anwendung auf verschiedenen Anwendungsservern einzusetzen. JPA ist in jedem Java EE-kompatiblen Anwendungsserver implementiert und ermöglicht den Austausch von Anwendungsservern, allerdings ändert sich dann auch die Implementierung. Eine Hibernate-Anwendung können sein einfacher auf einem anderen Anwendungsserver zu implementieren.

3voto

Arun Raaj Punkte 1638

JPA ist eine Spezifikation, die Sie in Ihrer Datenschicht implementieren, um DB-Operationen, OR-Mappings und andere erforderliche Aufgaben durchzuführen.

Da es sich nur eine Spezifikation brauchen Sie ein Werkzeug, um es zu implementieren. Dieses Werkzeug kann entweder Hibernate, TopLink, iBatis, spring-data usw. sein.

Sie benötigen nicht unbedingt JPA, wenn Sie Hibernate in Ihrer Datenschicht verwenden. Wenn Sie jedoch die JPA-Spezifikation für Hibernate verwenden, wird der Wechsel zu anderen ORM-Tools wie iBatis oder TopLink in Zukunft einfacher, da die Spezifikation auch für andere gemeinsam ist.

*( wenn Sie sich erinnern, tun Sie es import javax.persistence.*; Wenn Sie Annotationen für die OR-Zuordnung (wie @Id, @Column, @GeneratedValue usw.) in Hibernate verwenden, dann nutzen Sie JPA unter Hibernate, Sie können auch @Query und andere Funktionen von JPA nutzen )

2voto

Badal Punkte 3850

JPA ist eine Java-API-Spezifikation, die die Verwaltung relationaler Daten in Anwendungen auf der Java-Plattform beschreibt, während Hibernate eine ORM-Bibliothek (Object Relational Mapping) ist, die der JPA-Spezifikation folgt.

Sie können sich JPA als einen Satz von Regeln vorstellen, der von Hibernate implementiert wird.

2voto

JPA ist JSR, d.h. Java Specification Requirement zur Implementierung von Object Relational Mapping, das keinen spezifischen Code für seine Implementierung hat. Es definiert bestimmte Regeln für den Zugriff, die Persistenz und die Verwaltung von Daten zwischen Java-Objekten und der relationalen Datenbank. Mit seiner Einführung wurde EJB ersetzt, da es von der Java-Entwicklergemeinde als schwergewichtig kritisiert wurde. Hibernate ist ein hochleistungsfähiger objektrelationaler Persistenz- und Abfragedienst, der unter der quelloffenen GNU Lesser General Public License (LGPL) lizenziert ist. Der Vorteil ist, dass Sie die Hibernate-Implementierung von JPA gegen eine andere Implementierung der JPA-Spezifikation austauschen können. Wenn Sie nur Hibernate verwenden, sind Sie an die Implementierung gebunden, da andere ORMs andere Methoden/Konfigurationen und Anmerkungen verwenden können.

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