J'ai vu Spring, JPA travaille autour de référentiels (couche DAO: si je ne me trompe pas). Donc je veux dire en quoi il est différent d'utiliser «Spring JPA + Hibernate» ou d'utiliser uniquement «Hibernate» directement?
Comme vous l'avez dit, JPA est une spécification tandis qu'Hibernate est une implémentation particulière de cette spécification (ces implémentations sont généralement appelées fournisseurs ). En utilisant Hibernate, vous vous associez à ce fournisseur limitant votre liberté de basculer vers une autre option si nécessaire (par exemple, vous souhaitez utiliser EclipseLink ou ObjectDB à la place car Hibernate a un bogue qui arrête votre processus de développement).
Citant Printemps des données JPA de » documentation:
La mise en œuvre d'une couche d'accès aux données d'une application a été lourde pendant un certain temps. Il a fallu écrire trop de code standard. Les classes de domaine étaient anémiques et n'ont pas été conçues d'une manière réelle orientée objet ou axée sur le domaine.
L'utilisation de ces deux technologies facilite beaucoup la vie des développeurs en ce qui concerne la persistance du modèle de domaine riche. Néanmoins, la quantité de code standard pour implémenter les référentiels, en particulier, est encore assez élevée. Ainsi, l'objectif de l'abstraction de référentiel de Spring Data est de réduire considérablement l'effort d'implémentation des couches d'accès aux données pour divers magasins de persistance.
Pour résumer, il s'ajoute à JPA en ajoutant une autre couche d'abstraction, une sorte de définition d'une conception standard pour prendre en charge la couche de persistance dans un contexte Spring. Ces interfaces définies (connues de Spring) fournissent les services que le framework gère à l'aide de JPA pour servir les résultats. Vous définissez un référentiel de manière à ce que Spring puisse analyser le projet et le trouver:
<repositories base-package="com.acme.repositories" />
Ainsi, vous permettant de l'utiliser dans le cadre d'un conteneur ou en dehors de celui-ci.
Maintenant, quel est exactement Spring, JPA. Spring, JPA a-t-il ajouté des fonctionnalités supplémentaires (interfaces) sur JPA et est-il toujours spécifié uniquement ou est-il également un fournisseur JPA?
Spring Data JPA fournit une définition pour implémenter des référentiels pris en charge sous le capot en référençant la spécification JPA, à l'aide du fournisseur que vous définissez.