33 votes

Implémentations JPA - Laquelle est la meilleure à utiliser?

J'ai utilisé les suivants implémentations JPA:

  1. Hibernate,
  2. Toplink,
  3. OpenJPA

Chacun d'eux a ses propres forces et faiblesses. J'ai trouvé Hibernate le plus avancé des trois, sauf qu'elle a confondu certains de ses propres améliorations avec JPA qui fait qu'il est difficile de passer à d'autres fournisseurs. Plus important encore, son analyseur de requête a été beaucoup plus clémente lors de l'interprétation de JPA. Ils, il est un peu difficile d'obtenir les bonnes bibliothèques à l'appui de hibernate parce que j'ai trouvé une mission d'essayer d'obtenir le droit à des versions de toutes les dépendances.

Toplink a été ok, mais on a bien le sentiment qu'il est un peu paralysé comme il semble Oracle veut que vous utilisez/acheter? leur forme la plus avancée de la bibliothèque. Essaie de télécharger, il a également une mission parce que vous avez besoin de l'installer via l'exécution d'un fichier jar. J'ai trouvé qu'il a mis en place seulement la base de JPA spec. La raison que j'ai utilisé c'était hibernate utilise beaucoup de bibliothèques qui sont couramment utilisés dans d'autres projets open source que l'on a souvent obtenir classloarder problèmes, en particulier lors de l'utilisation de JBoss

OpenJPA - Ce qui a de loin la meilleure documentation et est facile à télécharger et à utiliser, mais il semble très buggé. Peut-être que sa viens de mon code, mais le code que j'ai trouvé des utilisations plus avancées telles que OneToMany relations avec CascadeType.tous ensemble juste ne semble pas fonctionner. Certes, Il est peut-être mon code qui n'allait pas et je n'ai pas eu le temps de tester un propre cas, mais de nombreux incidents de ce laissez-moi peur de l'utiliser. J'espère vraiment que ça va mieux. Ses messages d'erreur sont souvent inutiles pour résoudre le problème.

Quelles sont les autres bibliothèques ont les gens utilisés et ceux qui préfèrent-ils et pourquoi?

18voto

Clint Points 5864

J'ai eu les mêmes conclusions au sujet de ces implémentations.

  1. OpenJPA avait/semblait buggy

  2. Hibernate a eu des tonnes de bibliothèques et semble avoir du mal à ne pas le chargement paresseux tout.

  3. Toplink fini mon choix. Il n'était pas aussi flexible que la mise en veille aurait été, mais il fonctionne et je n'ai pas à installer commons-logging.

Celui que je voudrais essayer la prochaine est JPOX, qui a récemment été renommé datanucleus.

7voto

Chris Dail Points 11406

Personnellement je ne me sens pas OpenJPA est assez mature encore. Il y a d'autres bibliothèques open source qui sont plus matures et je préfère utiliser ceux-ci. Ce sont ceux que je considère dans l'ordre:

  1. Mise en veille prolongée. Hibernate a été autour pendant un long moment et a vraiment ouvert la voie pour l'ORM en Java. Le seul problème que j'ai avec Hibernate est l'octroi de licences. C'est sous LGPL qui peuvent causer des sociétés commerciales à se tortiller (pour des raisons que je n'évoquerai pas ici). De toute façon, si LGPL est un problème pour vous, il est probablement bon pour orienter clairement.

  2. EclipseLink. Un peu de fond sur eclipselink. Toplink Essentials était l'Oracle de la version gratuite de leur implémentation JPA. EclipseLink a été prise à partir de Toplink, d'Oracle complet soufflé implémentation JPA. EclipseLink va être la JPA 2.0 fournisseur pour Glassfish v3.0 donc, on dirait que tout est en mouvement, loin de Toplink Essentials et à EclipseLink. Bien que la EclipseLink version n'est 1.0.2, le produit a été autour pendant un long moment sous d'autres noms.

Un projet que je suis en train de travailler sur est sur Toplink Essentials pour l'instant, mais nous avons l'intention de passer à Eclipselink peu de temps. Hibernate a été pour les questions de licence je l'ai mentionné plus tôt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X