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.