Question

J'ai fait usage des implémentations JPA suivantes:

  1. Mise en veille prolongée,
  2. Toplink,
  3. OpenJPA

Chacun d'eux a ses propres forces et faiblesses. J'ai trouvé Hibernate le plus avancé des trois, sauf qu'il mélangé certains de ses propres améliorations avec JPA qui a rendu difficile de passer à d'autres fournisseurs. Plus important encore, son analyseur de requête était beaucoup plus clémente lors de l'interprétation JPA. Ils rendent un peu difficile d'obtenir les bonnes bibliothèques pour soutenir mise en veille prolongée parce que je l'ai trouvé une mission d'essayer d'obtenir les bonnes versions de toutes les dépendances.

Toplink était ok mais on reste avec le sentiment qu'il est un peu estropié comme il semble Oracle veut que vous utiliser / acheter? leur bibliothèque plus avancée. Essayer de le télécharger a également une mission parce que vous devez l'installer via l'exécution d'un fichier jar. Je trouve qu'il a mis en œuvre que la spécification JPA de base. La raison pour laquelle je l'ai utilisé était mise en veille prolongée utilise beaucoup de bibliothèques qui sont couramment utilisés dans d'autres projets open source que l'on pourrait souvent avoir des problèmes classloarder, en particulier lors de l'utilisation JBoss

OpenJPA - Cela a de loin la meilleure documentation et est facile à télécharger et à utiliser, mais il semble son très buggy. Peut-être est juste mon code mais le code que je trouve une utilisation plus avancée comme les relations avec OneToMany CascadeType.ALL situé juste ne semblent pas fonctionner. Certes, il est peut-être mon code qui était faux et je ne l'ai pas eu le temps de tester un cas propre, mais de nombreux incidents comme celui-ci me laissent peur de l'utiliser. Je l'espère vraiment ça va mieux. Ses messages d'erreur sont souvent inutiles pour aider à résoudre le problème.

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

Était-ce utile?

La solution

J'ai eu les mêmes conclusions au sujet de ces mises en œuvre.

  1. OpenJPA était / bogué semblait

  2. Mise en veille prolongée avait des tonnes de bibliothèques et semblait avoir du mal avec pas tout chargement paresseux.

  3. Toplink a fini par mon choix. Ce ne fut pas aussi flexible que Hibernate aurait été mais il fonctionne et je n'ai pas installer commons-logging .

Celui que je voudrais essayer suivante est JPOX, qui a récemment été renommé DataNucleus .

Autres conseils

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

  1. Mise en veille prolongée. Mise en veille prolongée a été autour depuis longtemps et a vraiment ouvert la voie à ORM en Java. La seule question que j'ai avec Hibernate est la licence. Il est LGPL une licence qui peut causer des sociétés commerciales à se tortiller (pour des raisons que je ne vais pas développer ici). Quoi qu'il en soit, si LGPL est un problème pour vous, il est probablement bon d'éviter.

  2. EclipseLink. Un peu d'histoire sur EclipseLink. TopLink Essentials est la version gratuite de leur mise en œuvre JPA d'Oracle. EclipseLink a été prise de Toplink, épanouie implémentation JPA d'Oracle. EclipseLink va être le fournisseur JPA 2.0 pour Glassfish v3.0 il semble que tout se déplace loin de Toplink Essentials et EclipseLink. Bien que la version EclipseLink est seulement 1.0.2, le produit a été autour depuis longtemps sous d'autres noms.

Un projet sur lequel je travaille est sur Toplink Essentials en ce moment, mais nous prévoyons de passer à EclipseLink sous peu. Mise en veille prolongée était pour les problèmes de licence je l'ai mentionné plus tôt.

OpenJPA est connu sous le nom Kodo, qui est ce que BEA a acheté tout à fait il y a longtemps. Kodo a été mise en œuvre de JDO et maintenant JPA. Nous utilisons également OpenJPA de manière intensive. Ainsi, je woudn't dire que c'est pas mature. Il est bien Cependant, je suggère d'utiliser Hibernate, à savoir emballages JPA autour Hibernate.

La raison? 1) JPA est très, très similaire à Hibernate 2) De nombreux postes de travail a besoin Mise en veille prolongée. Il est préférable de se pencher aux produits traditionnels ... en gros

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