J'ai récemment évalué et choisi la persistance cadre d'un projet java et mes conclusions sont les suivantes:
Ce que je vois, c'est que le soutien en faveur de JDO est avant tout:
- vous pouvez utiliser des sources de données sql, db4o, hbase, ldap, bigtable, couchdb (plugins pour cassandra) etc.
- vous pouvez facilement passer de l'un sql à la non-sql source de données et vice-versa.
- aucun des objets proxy et donc moins de douleur en ce qui concerne hashcode() et equals() implémentations
- plus POJO et donc moins de solutions de contournement nécessaire
- prend en charge plus de relations et les types de champ
et le soutien en faveur de la JPA est avant tout:
- de plus en plus populaire
- jdo est mort
- ne pas utiliser de pseudo-code binaire d'amélioration de la
Je vois beaucoup de pro-JPA postes de JPA développeurs qui n'ont manifestement pas utilisé JDO/Datanucleus offrant la faiblesse des arguments pour ne pas utiliser de JDO.
Je suis aussi de voir un grand nombre de messages de JDO les utilisateurs qui ont migré vers JDO et sont beaucoup plus heureuses.
Dans le respect de la JPA être de plus en plus populaire, il semble que cela est dû en partie en raison de SGBDR fournisseur de soutien, plutôt que ce soit techniquement supérieur. (On dirait VHS/Betamax pour moi).
JDO et c'est l'implémentation de référence de Datanucleus est clairement pas mort, comme indiqué par Google de l'adoption des ti pour la FGA et de développement actif sur le code-source (http://sourceforge.net/projects/datanucleus/).
J'ai vu un certain nombre de plaintes au sujet de JDO en raison de bytecode amélioration, mais pas d'explication mais pourquoi c'est mauvais.
En fait, dans un monde qui devient de plus en plus obsédée par les solutions NoSQL, JDO (et le datanucleus mise en œuvre) semble être un beaucoup plus sûr pari.
J'ai commencé à utiliser JDO/Datanucleus et l'ont mis en place de sorte que je puisse passer facilement à l'aide de db4o et mysql. Il est utile pour le développement rapide de l'utilisation db4o et ne pas avoir à trop se soucier de la DB du schéma, puis, une fois que le schéma est stabilisé à déployer une base de données. Je suis également convaincu que, plus tard, j'ai pu déployer tout ou partie de mon application en FGA ou de profiter de stockage distribué/carte-de réduire la hbase /hadoop / cassandra sans trop de refactoring.
J'ai trouvé le premier obstacle de la mise en route avec Datanucleus un peu délicat - La documentation sur le datanucleus site web est un peu difficile à obtenir dans - les tutoriels ne sont pas aussi faciles à suivre que je l'aurais aimé. Ayant dit que, le plus détaillé de la documentation sur l'API et de la cartographie est très bon une fois passé la courbe d'apprentissage.
La réponse est que cela dépend de ce que vous voulez. Je préfère avoir plus propre code, il n'-vendeur-lock-in, plus pojo, axés sur la nosql options versets plus populaire.
Si vous voulez le chaud pointilleux sentiment que vous faites la même chose que la majorité des autres développeurs/les moutons, choisissez JPA/hibernate. Si vous voulez vous entraîner dans votre domaine, test drive JDO/Datanucleus et faire votre propre idée.