Quelle est la différence entre JPA et Hibernate? [Fermer]

Cet article a été traduit de: Quelle est la différence entre JPA et Hibernate? [Closed]

Je comprends que JPA 2 est une spécification et Hibernate est un outil pour ORM Je sais que JPA 2 est une spécification et Hibernate est un outil pour ORM . De plus, je comprends qu'Hibernate a plus de fonctionnalités que JPA 2. Mais d'un point de vue pratique, quelle est vraiment la différence? De plus, j'ai appris qu'Hibernate a plus de fonctionnalités que JPA 2 . Mais d'un point de vue pratique, quelle est la vraie différence?

J'ai de l'expérience avec iBatis et maintenant j'essaie d'apprendre Hibernate ou JPA2 J'ai de l'expérience avec iBatis et maintenant j'essaie d'apprendre Hibernate ou JPA2. J'ai ramassé le livre Pro JPA2 et il continue de faire référence au "fournisseur JPA". J'ai ramassé le livre Pro JPA2 et toujours appelé "fournisseur JPA". Par exemple: Par exemple:

Si vous pensez qu'une fonctionnalité doit être standardisée, vous devez parler et la demander à votre fournisseur JPA, si vous pensez qu'une fonctionnalité doit être standardisée, vous devez crier et la demander à votre fournisseur JPA

Cela m'embrouille donc j'ai quelques questions: cela m'embrouille donc j'ai quelques questions :

  • En utilisant JPA2 seul, je peux récupérer des données de la base de données en annotant simplement mes POJO Je peux utiliser JPA2 seul pour annoter POJO pour obtenir des données de la base de données
  • Est-ce que JPA2 est censé être utilisé avec un "fournisseur JPA", par exemple TopLink ou Hibernate? Faut-il utiliser JPA2 avec un "fournisseur JPA" tel que TopLink ou Hibernate? Dans l'affirmative, quel est l'avantage d'utiliser JPA2 + Hibernate par rapport à JPA2 seul ou par rapport à Hibernate seul? Si oui, quels sont les avantages d'utiliser JPA2 + Hibernate par rapport à l'utilisation de JPA2 seul ou Hibernate seul ?
  • Pouvez-vous recommander un bon livre JPA2 pratique Pouvez-vous recommander un bon livre JPA2 pratique ? "Pro JPA2" ressemble plus à une bible et une référence sur JPA2 (Il n'entre pas dans les requêtes jusqu'à la dernière moitié du livre). "Pro JPA2" ressemble plus à une Bible et un livre de référence sur JPA2 (jusqu'à ce livre) (La seconde moitié du livre n'entre que dans les requêtes). Existe-t-il un livre qui adopte une approche problème / solution pour JPA2? Y a-t-il un livre qui adopte une approche problème / solution pour JPA2 ?

# 1 étage

Référence: https://stackoom.com/question/fSep/Quelle est la différence entre JPA et Hibernate-close


# 2F

JPA n'est qu'une spécification qui nécessite une implémentation concrète. JPA n'est qu'une spécification qui a besoin d'une implémentation concrète . Au défaut , la mise en œuvre d' Oracle le divulguez est « EclipseLink » maintenant. L'Oracle a fourni la mise en œuvre par défaut est maintenant « EclipseLink ». (Toplink est donné par Oracle à la fondation Eclipse pour fusionner avec eclipselink) (Toplink est donné par Oracle à la fondation Eclipse pour fusionner avec eclipselink )

(Référence: http://www.oracle.com/technetwork/middleware/toplink/index-085257.html http://www.eclipse.org/org/press-release/20080317_Eclipselink.php ) (参考 :http : / /www.oracle.com/technetwork/middleware/toplink/index-085257.html http://www.eclipse.org/org/press-release/20080317_Eclipselink.php

En utilisant Eclipselink, on peut être sûr que le code est portable pour n'importe quelle implémentation si besoin. L' utilisation d'Eclipselink peut garantir que le code est portable pour n'importe quelle implémentation en cas de besoin. Hibernate est également une implémentation JPA complète + PLUS (Sort of JPA Plus) Hibernate est également une implémentation JPA complète + MORE (Sort of JPA Plus ). Hibernate est un super ensemble de JPA avec des fonctionnalités spécifiques Hibernate supplémentaires Hibernate est un super ensemble de JPA avec des fonctionnalités spécifiques Hibernate supplémentaires . Par conséquent, une application développée dans Hibernate peut ne pas être compatible lorsqu'elle est basculée vers une autre implémentation. Par conséquent, lorsqu'elle est basculée vers d'autres implémentations, les applications développées par Hibernate peuvent ne pas être compatibles. La mise en veille prolongée est toujours le choix de la majorité des développeurs en tant qu'implémentation JPA et largement utilisée. L' état d'hibernation reste le choix de la plupart des développeurs car JPA est implémenté et largement utilisé.

Une autre implémentation JPA est OpenJPA (openjpa.apache.org) qui est une extension de l'implémentation Kodo. Une autre implémentation JPA est OpenJPA (openjpa.apache.org), qui est une extension de l'implémentation Kodo .


# 3 étage

JPA est une spécification d'API Java qui décrit la gestion des données relationnelles dans les applications utilisant la plate-forme Java. JPA est une spécification d'API Java qui décrit la gestion des données relationnelles dans les applications utilisant la plate-forme Java. où as Hibernate est une bibliothèque ORM (Object Relational Mapping) qui suit la spécification JPA. Parmi eux, Hibernate est une bibliothèque ORM (Object Relational Mapping) qui suit la spécification JPA .

Vous pouvez considérer JPA comme un ensemble de règles implémentées par Hibernate. Vous pouvez considérer JPA comme un ensemble de règles implémentées par Hibernate .


# 4F

JPA est une danseuse, Hibernate est une danseuse.


# 5F

Certaines choses sont trop difficiles à comprendre sans une perspective historique de la langue et de la compréhension du JCP. S'il n'y a pas de perspective historique de la langue et de la compréhension du JCP , certaines choses seront difficiles à comprendre.

Il y a souvent des tiers qui développent des packages qui remplissent une fonction ou comblent une lacune qui ne font pas partie du JDK officiel. Habituellement, il existe des packages développés par des tiers qui peuvent exécuter certaines fonctions ou combler des lacunes, ce qui n'est pas le JDK officiel Partie. Pour diverses raisons, cette fonction peut faire partie du JDK Java via le JCP (Java Community Process) Pour diverses raisons, cette fonction peut faire partie du JDK Java via le JCP (Java Community Process) .

Hibernate (en 2003) a fourni un moyen d'abstraire SQL et permet aux développeurs de penser davantage en termes d'objets persistants (ORM). Hibernate (en 2003) fournit un moyen d'abstraire SQL et permet aux développeurs de persister des objets (ORM) ) Pour plus de réflexion. Vous informez hibernate de vos objets Entity et il génère automatiquement la stratégie pour les conserver. Vous informez hibernate de vos objets Entity et il génère automatiquement des stratégies pour les conserver . Hibernate a fourni une implémentation pour ce faire et l'API pour piloter l'implémentation via la configuration XML ou des annotations. Hibernate fournit une implémentation à cet effet et fournit l'API pour piloter l'implémentation via la configuration XML ou des annotations.

Le problème fondamental est maintenant que votre code est étroitement associé à un fournisseur spécifique (Hibernate) pour ce que beaucoup de gens pensaient être plus générique. Le problème fondamental est maintenant que votre code est étroitement intégré à un fournisseur spécifique (veille) Ensemble, beaucoup de gens pensent que cela devrait être plus général. D'où la nécessité d'une API de persistance générique. Par conséquent, une API de persistance générique est nécessaire.

Pendant ce temps, le JCP avec beaucoup d' entrée de Hibernate et d' autres fournisseurs d'outils ORM a été le développement JSR 220 (Java Specification Request) qui a donné lieu à JPA 1.0 (2006) et , éventuellement , JSR 317 qui est JPA 2.0 (2009). Pendant ce temps, JCP en veille prolongée Avec le fort soutien d'autres fournisseurs d'outils ORM, JSR 220 (Java Specification Request) est en cours de développement, aboutissant à JPA 1.0 (2006) et finalement JSR 317, JPA 2.0 (2009). Ce sont les spécifications d'une API de persistance Java générique. Ce sont les spécifications d'une API de persistance Java générique . L'API est fournie dans le JDK sous la forme d'un ensemble d'interfaces afin que vos classes puissent dépendre de javax.persistence et ne pas se soucier du fournisseur particulier qui fait le travail de persistance de vos objets. JDK fournit l'API sous la forme d'un ensemble d'interfaces , Ainsi, votre classe peut dépendre de javax.persistence sans se soucier du fournisseur spécifique qui fait la persistance des objets. Ce n'est que l'API et non l'implémentation. Ce n'est que l'API, pas l'implémentation. Hibernate devient maintenant l'un des nombreux fournisseurs qui implémentent la spécification JPA 2.0. Hibernate devient maintenant l'un des nombreux fournisseurs qui implémentent la spécification JPA 2.0 . Vous pouvez coder vers JPA et choisir le fournisseur ORM conforme qui convient à vos besoins. Vous pouvez coder JPA et choisir tout fournisseur ORM compatible qui convient à vos besoins .

Dans certains cas, Hibernate peut vous offrir des fonctionnalités qui ne sont pas codifiées dans JPA. Dans certains cas, Hibernate peut vous fournir des fonctionnalités non écrites dans JPA. Dans ce cas, vous pouvez choisir d'insérer une annotation spécifique à Hibernate directement dans votre classe, car JPA ne fournit pas l'interface pour ce faire. Dans ce cas, vous pouvez choisir d'insérer des annotations spécifiques à Hibernate directement dans la classe car JPA ne fournit pas d'interface pour effectuer cette opération.

Source: http://www.reddit.com/r/java/comments/16ovek/understanding_when_to_use_jpa_vs_hibernate/ Source: HTTP : //www.reddit.com/r/java/comments/16ovek/understanding_when_to_use_jpa_vs_hibernate/


# 6 étage

JPA n'est qu'une spécification. Sur le marché, il existe de nombreux fournisseurs qui implémentent JPA. JPA n'est qu'une spécification. Il existe de nombreux fournisseurs mettant en œuvre JPA sur le marché. Différents types de fournisseurs implémentent JPA de différentes manières. Différents types de fournisseurs implémentent JPA de différentes manières. donc différents types de fournisseurs offrent des fonctionnalités différentes, alors choisissez le bon fournisseur en fonction de vos besoins. Par conséquent, différents types de fournisseurs offrent différentes fonctions, veuillez donc choisir le fournisseur approprié en fonction de vos besoins.

Si vous utilisez Hibernate ou tout autre fournisseur au lieu de JPA, vous ne pouvez pas facilement passer en hibernation vers EclipseLink ou OpenJPA vers Hibernate. Mais si vous utilisez JPA, il vous suffit de modifier le fichier XML de persistance. La migration est donc facilement possible dans JPA. Si vous utilisez Hibernate ou tout autre fournisseur au lieu de JPA, vous ne pouvez pas facilement le mettre en veille sur EclipseLink ou convertir OpenJPA en Hibernate. Mais si vous utilisez JPA, il vous suffit de modifier la disposition dans le fichier XML persistant. JPA.

Publié 0 articles originaux · loué 75 · 560 000 vues +

Je suppose que tu aimes

Origine blog.csdn.net/w36680130/article/details/105509663
conseillé
Classement