web-dev-qa-db-fra.com

Spring + Hibernate versus Spring Data JPA: Sont-ils différents?

Bien que n'étant pas novice, j'essaie d'apprendre le framework de printemps (encore!) Afin d'être sûr de bien comprendre cela. J'ai une idée juste sur le noyau de printemps (DI). Maintenant, je me concentre sur la couche de données.

Je suis tombé sur le terme " Spring and Hibernate ". Selon mon interprétation, cela impliquerait l’utilisation de Spring Framework avec Hibernate comme fournisseur d’outil ORM/JPA.

Maintenant, je suis tombé sur " Spring Data JPA ". J'ai précisé sur SO à propos de Spring Data JPA, qu'il s'agit d'une couche d'abstraction au-dessus de JPA (et sous le capot, Spring Data JPA utilise Hibernate ou tout autre fournisseur JPA).

Maintenant, ces termes sont-ils les mêmes? C'est-à-dire que " Spring + hibernate " est identique à celui de " Spring Data JPA ". Si non, alors quelle est la différence/similitudes?

Je suis vraiment confus sur tant de termes/déclarations (comme ci-dessus) qui semblent être similaires, mais peuvent être différents.

38
CuriousMind

Comme vous le dites, Spring-data-jpa offre bien plus que l'intégration classique de Spring-JPA. Avec l'intégration JPA/Hibernate, vous obtenez principalement

  • gestion déclarative des transactions à l'aide de transactions JPA/Hibernate
  • traduction d'exception
  • jPA EntityManager ou Hibernate SessionFactory en tant que haricots injectables

Avec Spring-data-jpa, vous obtenez tout cela, plus (entre autres)

  • référentiels d'interface uniquement, utilisant des noms de méthodes pour déduire automatiquement des requêtes
  • Annotation @Query pour définir la requête qu'une méthode d'interface doit renvoyer
  • traitement automatique des requêtes pageables
  • classes de base pour les référentiels Crud standard

Ceci est juste une petite introduction. Pour plus d'aide, lisez la documentation.

52
JB Nizet

quand vous parlez de printemps + hibernation 

  1. Si vous ne lisez qu'Hibernate seul, vous comprendrez qu'il utilise le mappage (configuration pour le mappage pojo avec les relations de base de données) et la configuration (configuration spécifique à la base de données telle que la classe de pilote, l'URL, le nom d'utilisateur, le mot de passe, le dialecte, etc.).
  2. Alors maintenant, si vous voulez utiliser read, write, update etc., vous devez obtenir hibernatesessionfactory, open transaction et commit. Beaucoup de travail avant et après chaque opération.
  3. Lorsque vous intégrez la mise en veille prolongée à spring, spring utilise cette configuration et la conserve dans le contexte de l'application. Elle fournit un wrapper hibernatetemplate qui en interne utilise hibernatesessionfactory. Ainsi, vous n'avez pas besoin de vous soucier beaucoup de pré et post code pendant ces opérations.
  4. Il a également fourni la mise en cache (cache de premier et deuxième niveau) pour améliorer les performances. 
  5. Et également vous permettre de travailler avec HQL qui est indépendant de la base de données. Il utilise un dialecte de base de données pour générer une base de données spécifique à SQL.

Parlons maintenant de spring + data jpa

  1. il est livré avec des interfaces de référentiel de base (à partir de Spring Data Common, Spring JPA)
  2. Supposons donc que vous souhaitiez effectuer une opération crud; il vous suffit d’étendre crud repository et le printemps injectera sa mise en œuvre au moment de l’exécution.
  3. Supposons que vous souhaitiez définir une méthode commune pour votre application. Pour ce faire, vous pouvez créer une nouvelle interface de référentiel qui étend l'interface Repository. Et peut utiliser cela à travers l'application.
  4. Il fournit également des méthodes de requête qui vous permettent d’utiliser sql or jpql. en natif.
7
Bhagwati Malav

Je trouve ce lien utile:

JPA est l'API Java Persistence, qui est l'API standard de Java pour le mappage objet-relationnel. 

JPA n'est qu'une spécification - vous avez besoin d'une implémentation pour pouvoir l'utiliser. Hibernate est l’une des implémentations les plus connues et les plus utilisées de JPA, mais il en existe d’autres, telles que EclipseLink JPA. 

Spring Framework est un vaste framework destiné à vous aider à écrire plus facilement un logiciel de niveau entreprise. Il prend en charge de nombreuses technologies Java, notamment JPA. 

Spring Framework consiste en un ensemble de projets, dont Spring Data. 

Spring Data a pour but de faciliter le travail avec différents types de bases de données, des bases de données relationnelles traditionnelles aux bases de données NoSQL. Spring Data prend en charge JPA via le sous-projet Spring Data JPA. 

Pour écrire un programme qui utilise JPA, vous devez au moins une implémentation de JPA, telle que Hibernate. 

Si vous utilisez Spring Framework pour votre application, vous souhaiterez probablement utiliser Spring Data JPA avec Hibernate. 

1
Tanim reja