Question

J'utilise EJB 3 sur un projet J2EE assez volumineux. Par défaut, avec Netbeans, le fournisseur persistant des beans entité est défini sur TopLink. Il est possible de changer le fournisseur pour l’un des suivants ou même d’ajouter une nouvelle bibliothèque de persistance:

  • Hibernate
  • KODO
  • OpenJPA

Quel fournisseur de persistance préférez-vous utiliser? Quels sont les avantages d'utiliser un autre fournisseur?

Bien que TopLink semble être bon, je ne trouve pas beaucoup de documentation sur la façon de contrôler la mise en cache, etc. Toute aide serait la bienvenue.

Était-ce utile?

La solution

Il n'y a que deux fournisseurs JPA que je pourrais utiliser:

Si vous souhaitez respecter les normes JPA, utilisez EclipseLink. Tandis que Toplink Essentials est l'implémentation de référence de JPA 1.0, EclipseLink a essentiellement hérité du code TopLink Essentials et sera l'implémentation de référence de JPA 2.0 (et fourni avec Glassfish lors de sa sortie; prévu autour de JavaOne en mai 2009). TopLink Essentials était une version quelque peu handicapée du produit commercial TopLink d’Oracle, mais EclipseLink présente toutes les fonctionnalités de TopLink.

L’autre choix est évidemment Hibernate. Il est largement utilisé et mature, mais n’est pas exempt de ce que j’ai vu. Par exemple, la dernière fois que j'ai regardé, Hibernate a des problèmes avec une entité ayant plusieurs relations enthousiastes un à plusieurs. Je ne sais pas si Hibernate a un équivalent à l'indice de requête par lots d'EclipseLink, mais c'est une fonctionnalité extrêmement utile pour traiter ce type de problème.

Bien entendu, Hibernate prend également en charge les applications JPA standard. Le plus gros avantage d’Hibernate est que, si vous avez des questions sur son fonctionnement, une recherche sur Google vous permettra probablement de trouver une réponse.

Honnêtement, je n’envisagerais rien d’autre que les deux fournisseurs susmentionnés.

Autres conseils

Je recommanderais vivement Hibernate pour les raisons suivantes:

  • La couche de persistance open source la plus utilisée et la plus respectée du monde Java; énorme communauté active et beaucoup d'utilisation dans les applications critiques à volume élevé.
  • Vous ne vous liez pas du tout à J2EE ou à un fournisseur spécifique si vous souhaitez suivre un chemin différent du reste de votre application, tel que Spring, etc., car Hibernate jouera toujours bien.

J’ai trouvé que Hibernate était assez bien documenté et bien pris en charge par les différentes technologies de mise en cache. Je l'ai également utilisé un peu plus que les autres dans des contextes non-JPA, alors peut-être que je suis un peu partial à cause de cela.

Les quelques petits projets de jouets que j'ai essayés avec TopLink Essentials ont également bien fonctionné, mais je n'ai jamais abordé la mise en cache ni quoi que ce soit qui nécessiterait une documentation spécifique au fournisseur. En général, je pense que cela suscite moins d’appui dans la communauté, ce qui explique en partie pourquoi j’ai fini par utiliser Hibernate.

J'utilise Hibernate. C'est très mature et fonctionne très bien. Personnellement, je n'ai utilisé aucun des autres, mais je sais qu'Hibernate est l'un des fournisseurs JPA les plus complets. De plus, parce que tant de gens l'utilisent, à peu près tous les problèmes que j'ai rencontrés, je peux rapidement trouver une solution avec un peu de recherche sur Google.

J'ai récemment travaillé sur une grande application d'entreprise construite avec le framework Kodo JPA. Les SQL produits par Kodo n'étaient généralement pas très évolutifs avec une grande quantité de données. À mon avis, cela produisait trop de requêtes avec des jointures externes. Compte tenu du nombre de mappages que nous avons dû modifier lorsque nous essayons de faire évoluer Kodo, je ne recommanderais pas de l'utiliser pour une grande application d'entreprise. Même les représentants Oracle avec lesquels nous avons parlé essaient de détourner les clients de kodo vers TopLink. Oracle pourrait éliminer progressivement le kodo.

DataNucleus http://www.datanucleus.org est également un fournisseur JPA entièrement compatible, avec JPA1. et certaines fonctionnalités d'aperçu JPA2

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top