Was ist der Unterschied zwischen JPA und Spring Data JPA?

Lesezeit: 5 Minuten

Benutzer-Avatar
Dhruv

Ich bin etwas verwirrt über den Unterschied zwischen Spring Data-JPA und JPA. Ich weiß über JPA, dass es sich um eine Spezifikation zum Persistieren der Java-Objekte in einer relationalen Datenbank unter Verwendung der gängigen ORM-Technologie handelt.

Mit anderen Worten, JPA stellt Schnittstellen und andere ORM-Technologien bereit und implementiert diese Schnittstellen, die als JPA-Anbieter bekannt sind, z. B. Hibernate.

Was genau ist Spring Data JPA?

Hat Spring Data JPA einige weitere 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 um Repositorys herum funktioniert (DAO-Schicht: wenn ich mich nicht irre). Also, ich meine, wie unterscheidet es sich bei der Verwendung von ‘Spring Data JPA + Hibernate’ oder nur bei der Verwendung von ‘Hibernate’?

Benutzer-Avatar
Fritz

Ich habe gesehen, dass Spring, JPA um Repositories herum funktioniert (DAO-Schicht: wenn ich mich nicht irre). Ich meine, wie unterscheidet es sich von der Verwendung von ‘Spring JPA + Hibernate’ oder der direkten Verwendung von ‘Hibernate’?

Wie du gesagt hast, JPA ist ein Spezifikation während Überwintern ist eine bestimmte Implementierung dieser Spezifikation (diese Implementierungen werden normalerweise als Anbieter). Durch die Verwendung von Hibernate binden Sie sich an diesen Anbieter und schränken Ihre Freiheit ein, bei Bedarf zu einer anderen Option zu wechseln (z. B. wenn Sie stattdessen EclipseLink oder ObjectDB verwenden möchten, weil Hibernate einen Fehler hat, der Ihren Entwicklungsprozess stoppt).

Zitieren Spring Data JPA‘s Dokumentation:

Die Implementierung einer Datenzugriffsschicht einer Anwendung war lange Zeit umständlich. Es musste zu viel Boilerplate-Code geschrieben werden. Domänenklassen waren anämisch und wurden nicht wirklich objektorientiert oder domänengesteuert entworfen.

Die Verwendung dieser beiden Technologien erleichtert Entwicklern das Leben in Bezug auf die Persistenz von Rich-Domain-Modellen erheblich. Trotzdem ist die Menge an Boilerplate-Code, um Repositories zu implementieren, immer noch ziemlich hoch. Ziel der Repository-Abstraktion von Spring Data ist es also, den Aufwand zur Implementierung von Datenzugriffsschichten für verschiedene Persistenzspeicher deutlich zu reduzieren.

Zusammenfassend lässt sich sagen, dass JPA eine weitere Abstraktionsebene hinzufügt und so ein standardbasiertes Design definiert, das unterstützt werden soll Persistenzschicht in einem Frühlingskontext. Diese definierten Schnittstellen (die Spring bekannt sind) stellen die Dienste bereit, die das Framework mithilfe von JPA verarbeitet, um die Ergebnisse bereitzustellen. 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.

Was genau ist nun Spring, JPA. Ist Spring, JPA hat einige weitere Funktionen (Schnittstellen) über JPA hinzugefügt und ist immer noch nur spezifiziert, 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.

  • Kann ich Repository als Sammlung von Entitäten bezeichnen, die Spring verwaltet? Ich weiß nicht warum, aber die Spring JPA-Unterstützung mit Repositories scheint dem EntityManager von EJB sehr ähnlich zu sein – ist das der richtige Gedanke oder sind sie in ihrem Zweck völlig anders? Danke im Voraus. Mussafa.

    – Als ob

    12. Juni 2014 um 17:55 Uhr

  • @Mustafa Die meisten Lösungen haben Gemeinsamkeiten. Auch wenn das Ziel dasselbe sein mag, ist die Implementierung aufgrund der beteiligten Schnittstellen unterschiedlich.

    – Fritz

    25. Juni 2014 um 17:36 Uhr

  • Ich bin verwirrt von “es ist auf JPA”, wenn JPA die Spezifikation ist, die Hibernate implementiert, bedeutet das, dass Spring Data JPA eine Obermenge von JPA ist. Wie ist TypeScript eine Obermenge von JavaScript?

    – Ghost3t

    22. April 2021 um 4:55 Uhr

Benutzer-Avatar
Shreyos Adikari

Die Java Persistence API, manchmal auch als JPA bezeichnet, ist ein Java-Framework, das relationale Daten in Anwendungen verwaltet, die die Java Platform, Standard Edition (JavaSE) und die Java Platform, Enterprise Edition (JavaEE) verwenden.

Persistenz umfasst in diesem Zusammenhang drei Bereiche:

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

  • Die Java Persistence Query Language (JPQL).

  • Objektrelationale Metadaten.

    Geben Sie hier die Bildbeschreibung ein

Spring Data JPA ist Teil des übergeordneten Spring Data-Projekts, das die Implementierung von JPA-basierten Repositories vereinfacht.

Merkmale:

  • Anspruchsvolle Unterstützung zum Erstellen von Repositories basierend auf Spring und JPA
  • Unterstützung für QueryDSL-Prädikate und damit typsichere JPA-Abfragen
  • Transparente Überwachung der Domänenklasse
  • 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ätszuordnung
  • JavaConfig-basierte Repository-Konfiguration durch Einführung @EnableJpaRepositories

    Geben Sie hier die Bildbeschreibung ein

Benutzer-Avatar
Vlad Mihalcea

JPA

JPA ist eine Spezifikation, die standardisiert, wie Java-Objekte einem relationalen Datenbanksystem zugeordnet werden. Da JPA nur eine Spezifikation ist, besteht es aus einer Reihe von Schnittstellen, wie z EntityManagerFactory, EntityManagerund Anmerkungen, die Ihnen helfen, ein Java-Entitätsobjekt einer Datenbanktabelle zuzuordnen.

Es gibt mehrere JPA-Anbieter wie HIbernate, EclipseLink oder Open JPA, die Sie verwenden können.

Spring Data JPA

Spring Data JPA ist eine JPA-Datenzugriffsabstraktion. Genau wie JPA kann Spring Data JPA nicht ohne einen JPA-Anbieter funktionieren.

Spring Data JPA bietet eine Lösung für die DDD Repository Muster oder der DAO (Data Acess Object) pattern. Es kann auch JPA-Abfragen in Ihrem Namen durch Methodennamenskonventionen generieren.

Spring Data JPA kann mit Hibernate, Eclipse Link oder jedem anderen JPA-Anbieter zusammenarbeiten. Ein sehr interessanter Vorteil der Verwendung von Spring oder Java EE besteht darin, dass Sie Transaktionsgrenzen deklarativ mit der steuern können @Transactional Anmerkung.

Jpa ist eine Spezifikation von java.it wird verwendet, um Daten zwischen Java-Objekt und relationaler Datenbank zu speichern. Frühlingsdaten jpa – es ist dasselbe wie jpa bedeutet, dass wir es auf folgende Weise beschreiben können. Spring Data Jpa ist ein jpa-Datenabstraktionszugriff, was bedeutet, dass es ein jpa mag, aber einige zusätzliche Funktionen hinzufügt. Ohne jpa können wir das spring data jpa nicht implementieren.

1348400cookie-checkWas ist der Unterschied zwischen JPA und Spring Data JPA?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy