-
JDO vs JPA que choisir ?
Bonjour,
Il y a quelques années que je m'intéresse aux bases de données objet sans vraiment avoir jamais regardé de plus près ce qu'on savait faire. Les bases de données objet ont l'avantage de pouvoir tirer profit de la structure des classes pour stocker plus efficacement les données. Il y a un certain nombre d'arguments en faveur des bases de donnée objet ou relationnelles :
http://en.wikipedia.org/wiki/ODBMS#A..._disadvantages
et on en vient assez naturellement à parler de JDO :
http://www.jdoinstruments.org/whyjdo.htm
et du coup, on peut se demander quelle solution choisir entre JDO et JPA. On trouvera alors un certain nombre d'informations précieuses ici :
http://db.apache.org/jdo/jdo_v_jpa.html
Seulement, ces informations semblent être en contradiction avec cette interview, apparemment du fondateur d'Hibernate qui écarte la question sur JDO :
http://www.javafree.org/artigo/871462/
(J'ai pas la date)
Maintenant, la question, c'est que faire ? Faut il utiliser JDO ou JPA ? Et avec quelles implantations ?
Si JDO semble plus puissant, il semble aussi qu'il y ait moins d'outils développés qui fournisse une implantation. Est-ce qu'Hibernate en envahissant l'espace aurait-il tué les projets d'implantation d'une norme plus générique ?
Est-ce une bonne idée d'utiliser des bases de donnée objet plutôt que relationnelles ? Est-ce qu'il existe des bases de donnée objet suffisamment puissantes pour rivaliser avec les bases de donnée relationnelles ? Faut il utiliser JDO ou JPA ?
En dernier ressort, si je ne trouve pas de réponse, je pourrais peut être faire tout à la fois, grâce à ce projet :
http://www.datanucleus.org/products/...1_0/index.html
Le connaissez vous ?
-
ayant utilisé les 2, je préfère la simplicité de mise en oeuvre de JPA et ça me rassure qu'il y ai plusieurs implémentations, et plus simplement Jpox.
-
Comment concrètement s'exprime cette simplicité de mise en oeuvre ?
-
En utilisant JPA, tu restes dans le standard ce qui aura, tôt ou tard, des avantages par rapport aux autres solutions (même si elles sont bonnes).
Personnellement, je pousse à l'utilisation des EJB3 qui rendent l'implémentation du JPA encore plus secondaire... On passe d'un TopLink à Hibernate sans aucune modification des EJB Entity et EJB Session.
Comme on peut, en plus, utiliser un conteneur EJB light sur Tomcat, plus rien ne s'y oppose...
JDO, j'avais tenté de l'utiliser (contrainte client) il y a 2 ans sans jamais trouver la doc qui va bien ou l'implémentation (ça a peut-être évolué depuis ;))
Avec Hibernate, tu as des tonnes de doc et exemples...
A+
-
Mais JDO est également un standard. Je ne vois pas en quoi JPA a un avantage sur JDO de ce coté là.
Je ne vois pas non plus en quoi utiliser des composants EJB3 permet d'être plus indépendant de l'implémentation. Les API JPA et JDO sont décrites entièrement et indépendamment des différentes implémentations, et passer d'une à l'autre ne pose a priori aucun problème.
-
JDO n'est pas un standard JEE :?
Pour le reste, essaye de passer d'une application développée avec Hibernate à TopLink, tu as toutes les chances d'avoir utilisé des options spécifiques... EJB3 Entity EST une norme JEE et si on respecte son vocabulaire (et options), l'implémentation physique de la norme est secondaire.
-
Pour moi c'est un no-brainer:
- JPA
1- JPA est le standard de persistance JavaEE
- utilisable dans JavaEE et JavaSE
2- JPA s'appuie sur des "Persistence Manager" divers ayant fait leur preuve et tres connus:
- Oracle Toplink (RI)
- Hibernate
- EclipseLink (base sur Toplink)
- OpenJPA
- Kodo
- ...
Je pense que tu trouveras bcp plus de competences et documentation autour de JPA. Et le nombre d'utilisateurs devrait encore grandir avec l'adoption de JavaEE 5.
Kenavo
Tug
http://www.exoplatform.org
http://www.nantesjug.org
http://blog.grallandco.com
-
JDO n'est peut être pas un standard J2EE mais est un standard et s'utilise avec J2EE.
La communauté est effectivement bien moins développée autour de JDO qu'autour de JPA. Mais le fait que les développeurs utilisent JPA parce que les autres utilisateurs utilisent JPA ne me convainc pas vraiment sur l'avantage de JPA par rapport à JDO.
Je pense que ce n'est pas qu'une question de mode et j'aimerais savoir pourquoi.