web-dev-qa-db-fra.com

JPA vs ORM vs Hibernate?

J'ai lu à leur sujet à travers diverses ressources. Les importateurs sont: -

  1. Article Wikipédia sur chacun d'eux
  2. Quelle est la différence entre JPA et Hibernate?

Voici ma compréhension de la différence entre eux. Je ne sais pas si j'ai raison sur JPA vs ORM

  1. ORM: Le mappage relationnel objet est un concept/processus de conversion des données d'un langage orienté objet vers une base de données relationnelle et vice versa Par exemple dans Java c'est fait avec l'aide de la réflexion et de jdbc.

  2. Hibernate: C'est l'implémentation du concept ci-dessus.

  3. JPA: C'est la seule étape au-dessus de l'ORM. Son API et ses spécifications de haut niveau afin que différents outils ORM puissent implémenter afin de fournir au développeur la flexibilité de changer l'implémentation d'un ORM à un autre (par exemple si l'application utilise l'API JPA et la mise en œuvre est en veille prolongée. À l'avenir, elle pourra passer à IBatis si nécessaire. Mais d'autre part si l'application verrouille directement l'implémentation avec Hibernate sans plateforme JPA, le switiching va être une tâche herculéenne)

Il peut y avoir une implémentation ORM avec/sans spécification JPA.Par exemple, selon ceci link sous la section hibernate, seules les versions Hibernate 3.2 et ultérieures fournissent une implémentation pour Java API Persistence

44
M Sach
  1. ORM est l'approche consistant à prendre des données orientées objet et à les mapper vers un magasin de données relationnelles (par exemple, un SGBDR)

  2. Hibernate est une implémentation de JPA et utilise la technique ORM.

  3. JPA est la spécification standard EE pour ORM dans Java EE. Hibernate est également une implémentation de cette spécification, en ce que vous pouvez utiliser les API JPA standard et configurer votre application pour utiliser Hibernate en tant que fournisseur de la spécification sous les couvertures.

Les fonctionnalités fournies par Hibernate sont également un surensemble des fonctionnalités ORM spécifiées dans la spécification JPA. Autrement dit, bien qu'il fournisse une implémentation de l'API JPA, il fournit également plus de fonctionnalités au-delà de ce que JPA spécifie.

28
Kevin Hooke

La seule erreur que vous sembliez faire dans votre compréhension est

C'est la seule étape au-dessus de l'ORM

Une note rapide, les bibliothèques commençant par javax.persistence sont associées à JPA. Vous devriez les préférer aux bibliothèques Hibernate dans la mesure du possible. Parce que ce sont portables. Cependant, vous obtiendrez quelques fonctionnalités supplémentaires dans Hibernate, et dans ces cas précis, n'hésitez pas à utiliser Hibernate.

1
Miguel Ángel