it-swarm.com.de

Spring Data-JPA versus JPA: Was ist der Unterschied?

Ich bin etwas verwirrt über den Unterschied zwischen Spring Data-JPA und JPA. Ich weiß von JPA, dass es eine Spezifikation ist, um die Java) Objekte in einer relationalen Datenbank unter Verwendung der gängigen ORM-Technologie zu speichern. Mit anderen Worten, JPA stellt Schnittstellen und andere ORM-Technologien zur Verfügung und implementiert die als JPA-Anbieter bekannten Schnittstellen zB Ruhezustand.

Nun, was genau ist Spring Data JPA. Hat Spring Data JPA etwas mehr Funktionen (Schnittstellen) über JPA hinzugefügt und ist es immer noch nur spezifiziert oder ist es auch ein JPA-Anbieter?

Ich habe gesehen, dass Spring Data JPA mit Repositorys arbeitet (DAO-Ebene: Wenn ich mich nicht irre). Also meine ich, wie es anders ist, wenn man "Spring Data JPA + Hibernate" oder nur "Hibernate" verwendet?

134
DHRUV BANSAL

Ich habe gesehen, Spring, JPA arbeitet um Repositories (DAO-Ebene: wenn ich mich nicht irre). Also ich meine, wie es anders ist mit "Spring JPA + Hibernate" oder nur mit "Hibernate" direkt?

Wie Sie sagten, [~ # ~] jpa [~ # ~] ist eine Spezifikation while Hibernate ist eine bestimmte Implementierung dieser Spezifikation (diese Implementierungen werden normalerweise als Provider bezeichnet. Wenn Sie Hibernate verwenden, binden Sie sich an diesen Anbieter und können bei Bedarf nicht auf eine andere Option wechseln (z. B. möchten Sie stattdessen EclipseLink oder ObjectDB verwenden, da Hibernate einen Fehler aufweist, der Ihren Entwicklungsprozess anhält).

Zitieren Spring Data JPA s Dokumentation:

Das Implementieren einer Datenzugriffsschicht einer Anwendung ist seit einiger Zeit umständlich. Es musste zu viel Code geschrieben werden. Domänenklassen waren anämisch und wurden nicht objektorientiert oder domänengesteuert entwickelt.

Die Verwendung dieser beiden Technologien erleichtert Entwicklern das Leben in Bezug auf die Persistenz des Rich Domain-Modells erheblich. Trotzdem ist die Menge an Code für die Implementierung von Repositorys immer noch recht hoch. Ziel der Repository-Abstraktion von Spring Data ist es daher, den Aufwand für die Implementierung von Datenzugriffsschichten für verschiedene Persistenzspeicher erheblich zu reduzieren.

Zusammenfassend ist zu erwähnen, dass JPA eine weitere Abstraktionsebene hinzufügt und so eine Art standardbasiertes Design definiert, das Persistence Layer in einem Spring-Kontext unterstützt. Diese definierten Schnittstellen (Spring bekannt) stellen die Dienste bereit, die das Framework mithilfe von JPA für die Bereitstellung der Ergebnisse verarbeitet. Sie definieren ein Repository so, dass Spring das Projekt scannen und finden kann:

<repositories base-package="com.acme.repositories" />

So können Sie es im Kontext eines Containers oder außerhalb davon verwenden.

Nun, was genau ist der Frühling, JPA. Hat Spring, JPA etwas mehr Funktionen (Schnittstellen) über JPA hinzugefügt und ist dies nur angegeben oder ist es auch ein JPA-Anbieter?

Spring Data JPA bietet eine Definition zum Implementieren von Repositorys, die unter der Haube unterstützt werden, indem auf die JPA-Spezifikation verwiesen wird, wobei der von Ihnen definierte Anbieter verwendet wird.

119
Fritz

Die Java Persistence API, manchmal auch als JPA bezeichnet, ist ein Java Framework zur Verwaltung relationaler Daten in Anwendungen unter Verwendung des Java Plattform, Standard Edition (JavaSE) und Java Plattform, Enterprise Edition (JavaEE).

Die Persistenz deckt in diesem Zusammenhang drei Bereiche ab:

  • Die API selbst, definiert in der javax.persistence Paket.

  • Die Java Persistence Query Language (JPQL)).

  • Objektrelationale Metadaten.

    enter image description here

Spring Data JPA ist Teil des Umbrella-Projekts Spring Data, das die Implementierung von JPA-basierten Repositorys erleichtert.

Funktionen:

  • Ausgefeilte Unterstützung zum Erstellen von Repositorys auf der Basis von Spring und JPA
  • Unterstützung für QueryDSL-Prädikate und damit typsichere JPA-Abfragen
  • Transparente Prüfung der Domainklasse
  • Paginierungsunterstützung, dynamische Abfrageausführung, Möglichkeit zur Integration von benutzerdefiniertem Datenzugriffscode
  • Validierung von @Query kommentierte Abfragen zur bootstrap Zeit
  • Unterstützung für XML-basierte Entitätszuordnungen
  • JavaConfig-basierte Repository-Konfiguration durch Einführung von @EnableJpaRepositories

    enter image description here
33
Shreyos Adikari