Printemps de Données JDBC / Spring Data JPA vs Hibernate
Quels sont les types des scénarios de vie réelle, où on pourrait choisir de Printemps de Données JDBC /Spring Data JPA vs Hibernate? J'aimerais comprendre les scénarios où une de ces implémentations sont les mieux adaptés.
Vous référez-vous à stackoverflow.com/questions/28163670/jdbc-vs-hibernate ??
Salut @Akshay particulier, j'ai été à la recherche pour les cas où le Printemps de Données JDBC & Spring Data JPA.
Pourquoi choisir? Pourquoi ne pas simplement utiliser Spring Data JPA Hibernate comme fournisseur JPA...?
Merci @FlorianSchaetz , est-il un avantage de l'utilisation de spring data jpa avec hibernate ? Aussi voudrais-je perdre quoi que ce soit si je viens d'utiliser le printemps de données jdbc?
Pas de discussion sur l'Orm n'est pas complet sans cette: blogs.tedneward.com/post/the-vietnam-of-computer-science
Salut @Akshay particulier, j'ai été à la recherche pour les cas où le Printemps de Données JDBC & Spring Data JPA.
Pourquoi choisir? Pourquoi ne pas simplement utiliser Spring Data JPA Hibernate comme fournisseur JPA...?
Merci @FlorianSchaetz , est-il un avantage de l'utilisation de spring data jpa avec hibernate ? Aussi voudrais-je perdre quoi que ce soit si je viens d'utiliser le printemps de données jdbc?
Pas de discussion sur l'Orm n'est pas complet sans cette: blogs.tedneward.com/post/the-vietnam-of-computer-science
OriginalL'auteur Punter Vicky | 2017-02-26
Vous devez vous connecter pour publier un commentaire.
@Naros dit, la question telle qu'elle est actuellement dans le titre ne fonctionne pas vraiment. Il semble que nous devrait vraiment regarder les 4 options et surtout la liste des avantages de chaque approche, les inconvénients sont l'absence des pros de l'autre:
JDBC sans Ressort des Données
Vous obtenez 100% de contrôle fin sur ce qui se passe. Rien n'est généré ou injecté par un cadre. Cela peut sembler être un con, mais si vous avez essayé de bidouiller les mappages et de configurations pour obtenir certains implémentation JPA faire ce que l'on pourrait trivialement écrire en java et SQL, vous comprendrez que cela peut être un grand pro.
Vous n'avez pas à apprendre JPA, ni de Données du Printemps. Personnellement, je pense que le Printemps de Données est facile, mais je suis partial (voir mon Profil). Mais JPA est certainement plus difficile, une fois que vous quittez la zone de trivial entités et de l'installation.
Vous voudrez probablement utiliser une bibliothèque dans le but de couper vers le bas sur le code réutilisable. Jetez un oeil à:
JOOQ
MyBatis
Printemps JdbcTemplate (utilisable sans le reste de Printemps)
QueryDsl
JDBC avec le Printemps des Données
Vous obtenez les avantages de Printemps de Données, combinées avec celles de JDBC (voir ci-dessus):
Référentiels avec les méthodes CRUD hors de la boîte.
Belle intégration dans le Printemps de l'infrastructure, de la gestion des transactions, l'injection de dépendance, erreur de traduction, la pagination ...
Il est encore vraiment un modèle de programmation simple. Les instructions SQL arriver exactement quand on pourrait s'attendre à se produire, et si vous le désirez, vous pouvez revenir à simple JDBC avec ou sans le soutien d'autres cadres, sans violer aucune abstraction.
Alors que pas encore disponible, vous aurez encore plus de goodies avec les futures mises à jour:
Agréable et facile des façons d'étendre vos dépôts avec les méthodes de requête (il vous suffit de définir votre interface d'avoir un
findByLastName
méthode de Printemps et génère pour vous sur la volée) ou@query
des annotations ou des méthodes personnalisées.De soutien pour la pagination
Mise en veille prolongée (ou une autre implémentation JPA) sans Ressort des Données
JPA fait beaucoup de choses sur JDBC
La mise en cache (1ère, 2ème niveau, et de la mise en cache de requêtes)
Création automatisée de cas à partir de requêtes
De Navigation entre les entités
Chargement paresseux
Avec tous ce genre de choses se passe, il peut être difficile de comprendre ce qui se passe et pourquoi. Bien sûr IFF la structure de votre application, vous pouvez tout simplement tomber en arrière sur JDBC si l'APP n'offre pas ce que vous voulez. Mais je l'ai vu plusieurs fois que les gens ne réussit pas à maintenir la structure nécessaire pour que cela fonctionne. Évidemment, cela est particulièrement difficile si vous ne comprenez pas correctement comment JPA œuvres.
Mise en veille prolongée (ou une autre implémentation JPA) avec le Ressort des Données
J'ai énuméré les avantages du Ressort des Données ci-dessus, il suffit de faire une copie mentale&coller.
Bien sûr, cela rend la pile complète de même plus complexe. De nombreuses questions tagged avec ressort des données ET mise en veille prolongée, il semble que beaucoup de développeurs ont des problèmes d'identification de l'outil qui fait quoi. Mais aussi de la recherche sur ces questions, la plupart décrire les problèmes avec Hibernate/JPA, et pas de Printemps de Données.
Pour conclure:
Si vous voulez/besoin d'un contrôle précis de l'utilisation de JDBC.
Si vous allez utiliser JPA, assurez-vous de comprendre dès le début.
Si pour la persistance de la technologie que vous choisissez de Données du Printemps propose un module, je voudrais l'utiliser. Il va rendre la vie plus facile. Mais encore une fois je suis partial.
Printemps de Données est l'un de LA meilleure invention pour les développeurs pour la gestion des données. J'ai toujours dit: à l'Aide de pure JDCB est inutile, de même que l'utilisation pure JPA. Vous devez savoir quand les mélanger entre eux. Si vous utilisez Java et non pas à l'aide de Données du Printemps, vous devriez commencer à.
Super Réponse, cependant je ne peux pas dire les avantages de l'utilisation de Spring Data JPA plus de Printemps de Données JDBC ou vice versa. Pourriez-vous effacer ? Honnêtement, je ne vois pas comment juger si je veux utiliser l'un sur l'autre dans un nouveau projet. Il semble que je recherche CrudRepository vs JpaRepository après tout !
Je dirais que la question est: avez-vous des profits à partir des caractéristiques de la JPA, ou sont-ils obtenir sur votre chemin. Printemps de Données JDBC est beaucoup plus simple: moins de fonctionnalités, mais aussi plus facile à comprendre.
OriginalL'auteur Jens Schauder
Un problème avec votre question est que vous semblez insinuer que Spring Data JPA est comme Hibernate et qui ne l'est pas réellement vrai. Spring Data JPA est simplement un printemps centrée sur le wrapper qui propose des élastiques de la sémantique et de fonctionnalités qui enveloppent un fournisseur JPA qui Hibernate est une mise en œuvre.
Ergo, vous ne pouvez pas utiliser Spring Data JPA sans y compris certains implémentation JPA comme Hibernate.
La base de la question que vous posez est pourquoi l'utilisation de JDBC vs un ORM. Pour comprendre que vous devriez prendre le temps de comprendre les avantages d'un ORM. Il existe de nombreux articles sur l'internet qui peut vous donner que.
Mais même dans un ORM piloté par application, il y aura des moments où vous aurez des cas que vous avez besoin de contourner l'ORM et utiliser SQL natif, comme vous le feriez dans JDBC. Ces cas sont souvent rares, mais il est nécessaire lorsque vous voulez prendre avantage de certaines non pris en charge fonctionnalité de base de données ou si vous souhaitez le contrôle ultime de manipuler les résultats, etc.
Le facteur décisif pour l'utiliser en fin de compte dépend des besoins de votre application. Mais juste parce que vous choisissez d'utiliser un ORM de ne pas s'excluent la possibilité d'exécuter des indigènes et de requêtes de SQL comme vous le feriez dans JDBC. Ces caractéristiques sont encore disponibles, vous n'utilisez généralement ceux dans de rares cas.
Comme Jens a souligné, le printemps de données jdbc n'est pas officically existe pas, donc aucun. Spring Data JPA rend l'utilisation de l'ORM d'un cran plus facile, qui est essentiellement ce que le Printemps ne: Prendre des trucs et de les rendre plus faciles à utiliser.
+1 pour le "Spring Data JPA est simplement un printemps centrée sur le wrapper qui propose des élastiques de la sémantique et de fonctionnalités qui enveloppent un fournisseur JPA". Si vous passez par les dépendances de la collection printemps-amorçage-starter-data-jpa POM fichier, vous verrez que l'un d'eux est org.mise en veille prolongée.hibernate-core.
OriginalL'auteur Naros
découvrez actualisation.io,
actualiser offrent des performances et de l'ORM.
également vérifier spring-data-requery
OriginalL'auteur Debop
La chose est du Ressort des données de jpa est une abstraction au-dessus de jpa, qui est une abstraction au-dessus de JDBC. Si l'offre de belles caractéristiques, même si jpa est utilisable sans elle. Il devient vraiment puissant avec le Printemps, les données de repos.
Mais plus un cadre fait pour vous, plus vous aurez besoin de comprendre la technologie sous-jacente. C'est encore plus vrai si vous utilisez printemps-données-repos. Le mieux est de commencer par comprendre sql (conception et requêtes), puis jpa (chargement paresseux, à l'exemple des états, des entités, des embeddables, les caches, les requêtes, l'opération de synchronisation).
Puis vous essayez spring-data-jpa et de décider si elle apporte de la valeur à votre projet. Pour enregistrer, mettre à jour, supprimer et recherche par id opérations, fondamentalement, c'est un wrapper autour de
persist
,merge
,remove
etfind
méthode deEntityManager
. Le principal avantage de Spring data JPA est la prise en charge des requêtes, mais querydsl est également une option intéressante. Dans les deux cas, il nécessite une compréhension claire de la façon dont JPA œuvres. La première chose à faire est d'activer la journalisation SQL pour voir si, pour une db access, votre implémentation jpa exécuter des requêtes que administrateur de base de données permettrait d'envisager de les corriger. Par exemple, désireux de chargement sur une entité qui n'est pas en cache les résultats de 1+n sélectionnez, vous l'unité de test passe et les problèmes vont commencer dans la production. spring-data-jpa ne va pas résoudre le problème pour vous.Il y a beaucoup de spring-data-* à côté de spring-data-jpa, certains d'entre eux offrent également la cartographie des annotations (printemps-données-cassandra par exemple), ce qui est utile quand il n'y a pas d'objet de base de la cartographie.
OriginalL'auteur Gengis