# Java > Gnral Java > Persistance des donnes >  JDO vs JPA que choisir ?

## Blustuff

Bonjour,

Il y a quelques annes que je m'intresse aux bases de donnes objet sans vraiment avoir jamais regard de plus prs ce qu'on savait faire. Les bases de donnes objet ont l'avantage de pouvoir tirer profit de la structure des classes pour stocker plus efficacement les donnes. Il y a un certain nombre d'arguments en faveur des bases de donne 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 prcieuses 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 dvelopps qui fournisse une implantation. Est-ce qu'Hibernate en envahissant l'espace aurait-il tu les projets d'implantation d'une norme plus gnrique ?

Est-ce une bonne ide d'utiliser des bases de donne objet plutt que relationnelles ? Est-ce qu'il existe des bases de donne objet suffisamment puissantes pour rivaliser avec les bases de donne relationnelles ? Faut il utiliser JDO ou JPA ?

En dernier ressort, si je ne trouve pas de rponse, je pourrais peut tre faire tout  la fois, grce  ce projet :

http://www.datanucleus.org/products/...1_0/index.html

Le connaissez vous ?

----------


## cisco

ayant utilis les 2, je prfre la simplicit de mise en oeuvre de JPA et a me rassure qu'il y ai plusieurs implmentations, et plus simplement Jpox.

----------


## Blustuff

Comment concrtement s'exprime cette simplicit de mise en oeuvre ?

----------


## OButterlin

En utilisant JPA, tu restes dans le standard ce qui aura, tt ou tard, des avantages par rapport aux autres solutions (mme si elles sont bonnes).

Personnellement, je pousse  l'utilisation des EJB3 qui rendent l'implmentation 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'implmentation (a a peut-tre volu depuis  :;): )
Avec Hibernate, tu as des tonnes de doc et exemples...

A+

----------


## Blustuff

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 indpendant de l'implmentation. Les API JPA et JDO sont dcrites entirement et indpendamment des diffrentes implmentations, et passer d'une  l'autre ne pose a priori aucun problme.

----------


## OButterlin

JDO n'est pas un standard JEE  ::?: 
Pour le reste, essaye de passer d'une application dveloppe avec Hibernate  TopLink, tu as toutes les chances d'avoir utilis des options spcifiques... EJB3 Entity EST une norme JEE et si on respecte son vocabulaire (et options), l'implmentation physique de la norme est secondaire.

----------


## tgrall

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

----------


## Blustuff

JDO n'est peut tre pas un standard J2EE mais est un standard et s'utilise avec J2EE.

La communaut est effectivement bien moins dveloppe autour de JDO qu'autour de JPA. Mais le fait que les dveloppeurs 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.

----------

