Ich habe Spring gesehen, JPA arbeitet mit Repositories (DAO-Schicht: wenn ich mich nicht irre). Also meine ich, wie es anders ist, wenn man 'Spring JPA + Hibernate' verwendet oder nur 'Hibernate' direkt verwendet?
Wie Sie sagten, ist JPA eine Spezifikation, während Hibernate eine bestimmte Implementierung dieser Spezifikation ist (diese Implementierungen werden normalerweise als Anbieter bezeichnet ). 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. möchten Sie stattdessen EclipseLink oder ObjectDB verwenden, da Hibernate einen Fehler aufweist, der Ihren Entwicklungsprozess anhält).
Zitiert von 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 wirklich objektorientiert oder domänengesteuert entworfen.
Die Verwendung dieser beiden Technologien erleichtert Entwicklern das Leben in Bezug auf die Persistenz des Rich-Domain-Modells erheblich. Trotzdem ist die Menge an Boilerplate-Code zum Implementieren von Repositorys, insbesondere, 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 lässt sich sagen, dass JPA zusätzlich zu einer weiteren Abstraktionsebene ein standardbasiertes Design definiert, um die Persistenzschicht in einem Spring-Kontext zu unterstützen. Diese definierten Schnittstellen (Spring bekannt) 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 Frühling, JPA? Ist Spring, JPA hat einige weitere Funktionen (Schnittstellen) über JPA hinzugefügt und es wird immer noch 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 unter Verwendung des von Ihnen definierten Anbieters verwiesen wird.
Die Persistenz umfasst in diesem Zusammenhang drei Bereiche:
Die im
javax.persistence
Paket definierte API selbst .Die Java Persistence Query Language (JPQL).
Objektrelationale Metadaten.
Eigenschaften:
@Query
kommentierter Abfragen zur Bootstrap-Zeit@EnableJpaRepositories
quelle
JPA
JPA ist eine Spezifikation, die die Art und Weise standardisiert, wie Java-Objekte einem relationalen Datenbanksystem zugeordnet werden. JPA ist nur eine Spezifikation und besteht aus einer Reihe von Schnittstellen wie
EntityManagerFactory
undEntityManager
und Anmerkungen, mit denen Sie ein Java-Entitätsobjekt einer Datenbanktabelle zuordnen können.Es gibt mehrere JPA-Anbieter wie HIbernate, EclipseLink oder Open JPA, die Sie verwenden können.
Federdaten JPA
Spring Data JPA ist eine JPA-Datenzugriffsabstraktion. Genau wie JPA kann Spring Data JPA ohne einen JPA-Anbieter nicht funktionieren.
Spring Data JPA bietet eine Lösung für das DDD-
Repository
Muster oder dasDAO (Data Acess Object) pattern
. Es kann auch JPA-Abfragen in Ihrem Namen durch Methodennamenkonventionen 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 mithilfe der
@Transactional
Annotation deklarativ steuern können .quelle