2
votes

Utilisation de Spring Data JPA au lieu de l'hibernation

Pouvons-nous utiliser Spring Data JPA pour effectuer toutes les opérations de base de données? Pouvons-nous effectuer toutes les tâches complexes telles que la mise en cache, les procédures stockées, etc. en utilisant Spring Data JPA et utiliser Spring Data JPA à la place de l'hibernation?

Tous les exemples que j'ai rencontrés n'utilisent que Spring Data JPA avec Spring Boot.


0 commentaires

3 Réponses :


6
votes

Spring data n'est pas destiné à remplacer hibernate .

Le but de spring data est de simplifier ou de supprimer complètement les implémentations de la couche DAO .

Hibernate implémente la spécification JPA , mais pas les spring data . Les données de printemps peuvent également utiliser hibernate comme implémentation de la spécification JPA .


0 commentaires

3
votes

Les données de printemps nommées dans une autre réponse sont différentes. C'est un parapluie qui couvre un projet destiné à accéder aux bases de données d'une manière ou d'une autre. Ce sont spring-data-jpa, spring-data-jdbc ...

Spring-data-jpa est le composant de spring qui facilite l'utilisation de jpa, par exemple, en fournissant une interface JpaRepository , où vous pouvez définir des méthodes sans implémentation, qui seront implémentées à l'exécution en utilisant leurs noms . De cette façon, vous pouvez gérer votre couche persistante sans écrire une seule ligne de SQL.

Sous le capot, spring-data-jpa utilise une implémentation jpa. Par défaut, il est en veille prolongée, mais il peut être changé en openJPA, toplink et autres.


2 commentaires

Comme vous l'avez dit, spring-data-jpa est en veille prolongée par défaut, cela signifie que tout ce qui peut être fait en utilisant la mise en veille prolongée peut également être fait en utilisant spring-data-jpa seul?


Je n'ai pas dit que ce sont les mêmes, j'ai dit que spring-data-jpa utilise hibernate. Alors oui, vous pouvez utiliser la fonctionnalité de mise en veille prolongée



2
votes
  • Spring Data JPA est l'abstraction Spring vers JPA (Java Persistence API) avec des méthodes plus faciles à utiliser ainsi que les valeurs par défaut définies dans la spécification JPA
  • Hibernate dans l'autre cas est une implémentation JPA (fournisseur JPA).

Spring Data ne peut pas exister par lui-même et a besoin de l'un ou l'autre fournisseur JPA pour l'implémentation des méthodes. Pour cette raison, Spring Data JPA peut fonctionner avec n'importe quel fournisseur JPA mais est configuré automatiquement avec Hibernate par défaut.

J'ai utilisé Spring Data JPA dans des projets petits et grands avec des requêtes simples. Le principal avantage est de ne même pas avoir à utiliser l'annotation @Query . Il n'y a rien dans Spring Data qui vous empêche de l'utiliser dans de grands projets et la prise en charge récente de QueryDSL pourrait vous aider. Voici un exemple d'utilisation de QueryDSL pour cibler Hibernate.

Si vous prévoyez des requêtes complexes et que vous vous sentez à l'aise d'utiliser des objets Hibernate sans JPA, je pense qu'une combinaison alternative pourrait être d'avoir les simples Repository de Spring Data à côté de ceux basés sur Hibernate complexes avec les méthodes spécifiques vous pourriez avoir besoin. Cela peut être moins compliqué que de transformer une implémentation Hibernate en une structure Spring Data JPA.


0 commentaires