# Java > Gnral Java > Persistance des donnes >  Questions et refexion JDO ?

## elitost

Bonjour,

Actuellement en mission et utilisateur de JDO ( que je ne connaissais pas auparavant ) j'ai quelques questions et reflexions sur le sujet.

J'ai lu le tutorial sur le sujet : http://bmoussaud.developpez.com/tutoriel/java/jdo/

Alors :

Pourquoi choisir JDO ? quels en sont les avantages ?

JDO ou hibernate ?

JDO permet t'il de s'affranchir totalement de la modlisation de la base de donnes ?

Il existe une spcification de JDO mais une pliade d'implmentations ( JPOX, Lido, KODO, Castor JDO ...) , sont elles compatibles ?

La technologie JDO est elle mature ?

Merci d'avance

----------


## Zagawa

Ces questions m'interesse aussi notament sur le choix de technologie.

Quelqu'un pour eclairer nos lanternes ?

----------


## elitost

Peut tre que le post n'est pas dans la bonne section ?

----------


## MiJack

J'ai eu l'occasion de faire une analyse de JDO dernirement. Malheureusement je n'ai pas pu personnellement faire de comparatif avec Hibernate, mais je m'tais laiss entendu dire qu'Hibernate tait la meilleure option.

Ceci dit, il faudrait creuser, car je n'ai pas vraiment d'arguments ou de points de comparaison  te proposer.   ::(:

----------


## n00bi

Hop hop je fait remonter le post. Est-ce que quelqu'un dans le monde est capable de nous expliquer quels sont les Avantages et inconvnients de JDO par rapport  Hibernate. Et vice-versa.

Et je rajoute une petite question : Qu'apporte le framework spring  l'utilisation de JDO et Hibernate ?

D'aprs ce que j'ai pu lire la diffrence rside en le fait que JDO est  la base une norme pour dfinir la persistence des donnes avec abstraction de la source de donnes (BDR, BDO, XML ...). Alors que Hibernate est un Framework ORM.

Les deux semblent tre capable de faire la mme chose (ORM et abstraction de la source). Cependant Hibernate a plus t fait pour le mapping sur BDR que sur BDO et l'implmentation BDO est plus difficile  mettre en place que JDO. Le HQL serait galement de plus haut niveau que le JDOQL.

Globalement ce que j'ai retenu est que :
- pour un mapping BDR il vaut mieux utiliser Hibernate.
- pour un mapping BDO il vaut mieux utiliser JDO mme si Hibernate s'adapte trs bien. Je pense aussi que ca dpend de la BDO mais bon je me trompe peut tre.

Ces infos sont elles fausses ? Qui peut m'clairer ?

Merci d'avance ^^

----------


## FreshVic

Slt, 
je suis loin d'etre un expert mais je peux dire qu'hibernate a d'abord ete concu exclusivement pour faire de la persistance sur des BDR alors que JDO est une spec pour toute sorte de support de persistance , mais il me semble que depuis sa version 3 Hibernate effectue de la persistance sur differents supports .

Ensuite j'ai utilis JDO et hibernate (mais vraiment tres superficiellement) et la chose qui ma marqu est l'enhancement pour JDO en gros une fois ton code compiler tu dois lancer une tache qui va rajouter du code a tes POJO , alors qu'hibernate lui utilise CGLIB pour faire ca a la voll.
Ce qui d'apres moi fait un avantage pour Hibernate .

Ensuite ( et surtout) Hibernate s'impose comme un standard et il seras (ou est deja??) probablement la premiere implementation de la specification EJB 3 , d'apres moi SUN va laiss tomb JDO au profit d'EJB3 , mais ce n'est que mon avis , et je le rapelle je suis neophite sur le sujet .
A+

----------


## n00bi

Hop hop hop je fait remonter le sujet car je n'ai pas reu de rponse sur ce qu'apporte spring  Hibernate et je rajoute une couche. 

Est-ce que la prcarit du pool de connexion d'Hibernate est trs pnalisante en terme de performance ? Si oui ne peut-on pas l'amliorer  la main puisque Hibernate utilise JDBC qui gre les pools de connexion ? Quel serait le niveau d'expertise requis pour implmenter ce pool de connexion  la main si c'tait possible ?

Merci d'avance.  ::):

----------


## FreshVic

> Hop hop hop je fait remonter le sujet car je n'ai pas reu de rponse sur ce qu'apporte spring  Hibernate et je rajoute une couche. 
> 
> Est-ce que la prcarit du pool de connexion d'Hibernate est trs pnalisante en terme de performance ? Si oui ne peut-on pas l'amliorer  la main puisque Hibernate utilise JDBC qui gre les pools de connexion ? Quel serait le niveau d'expertise requis pour implmenter ce pool de connexion  la main si c'tait possible ?
> 
> Merci d'avance.


EN ce qui concerne le pool de connexion d'hibernate d'apres ce qu'ils preconisent il ne faut surtout pas l'utiliser en envieronnement de production , mais rien ne t'empeche d'en utiliser un autre DBCP (de jakarta) par exemple (qui est notament celui de tomcat)

----------


## n00bi

Je fait remonter le topic pour informations complmentaire :

Qu'a de plus Hibernate par rapport  JDO si ce n'est sa popularit et sa large communaut d'utilisateurs et un langage de requtage (HQL) apparament de plus haut niveau ?

En fait pour vous situer le contexte dans lequel je me trouve : je doit faire un choix d'une solution de mapping/persistance O/R pour une solution standalone. Je doit possder des arguments fiables qui me permettent de dire :
- Il vaut mieux que je choisisse JDO
- Il vaut mieux que je choisisse un Framework (Hibernate, OJB, JPox, iBatis, TopLink ...)
- Il vaut mieux que je choisisse les EJB3.0

Et qu'apporte le framework Spring  tout cela ?

J'ai vraiment l'impression qu'il y a une "gueguerre" au sein meme de Sun entre JDO et Hibernate. Qui a le plus de chance de devenir LE standard ? Je pencherai pour Hibernate mais bon les avis sont partags. Lachez-vous svp  ::): 

Merci d'avance de vos rponses  ::):

----------


## afrikha

Il n'y a qu'aller sur le site de JPOX pour se rendre compte  quel point ce dernieer est meilleur qu'Hibernate.

Mais bon ceci reste mon avis, alors pas frapper svp...

----------


## n00bi

Mouais tu m'as tout l'air d'tre partial.   ::lol::   Bon alors JDO ou Hibernate ? Pourquoi ? Quelles sont les diffrences (a part le JDO est une spcification, Hibernate est un framework) ? Parce que les deux peuvent faire la meme chose : mapping et persistance.

Personnellement j'ai l'impression que EJB 3.0 va tre le juge de paix pour dpartager ces deux technologies.

----------


## manube

Je ne vais peut tre pas apporter gd chose  cette discussion mais pour avoir travailler l'an dernier sur un projet utilisant JDO (nous avions commenc avec une implmentation dont je ne me souviens plus le nom et fini avec JPOX) j'avais trouv cette techno pas suffisamment mature, ca manquait de doc et de support (pas bcp d'utilisateurs). C'tait trs intressant au niveau conceptuel mais je ne le recommenderait pas pour de la production (moi c'tait un proto  la fac). 
Aprs ca volue rapidement et je ne suis peut tre plus "up-to-date" dc je m'en tiendrai l car je n'ai jamais utilis Hibernate.

----------


## n00bi

Non ton avis apporte beaucoup. C'est vrai que j'ai constat qu'il y avait des communauts d'utilisateurs des deux cts. Mais celle de Hibernate semble quand mme plus fournie. En plus on trouve beaucoup plus facilement de la doc Franaise pour Hibernate que pour JDO.

Un argument que je donnerais en plus en faveur d'Hibernate est qu'il n'tait pas un standard est l'est devenu, plbiscit par la communaut Open Source. Il a fait sa place non parce qu'il tait standard mais parce qu'il tait efficace. 

Un autre argument en faveur de Hibernate pour ma part est son implmentation pour .NET avec NHibernate. Je ne connais pas les spcifications de la version pour dotNet mais l'utilisation de Hibernate avec Java pourrait faciliter le portage vers C#.Net si le besoin s'en faisait sentir. On aurait dja la connaissance de la manipulation de la technologie de mapping.

Je n'entend pas spcialement passer sur du .Net. Mais les dcisions ne viennent souvent pas des programmeurs mais de leur direction (pour effet de mode ou choix stratgique).

Maintenant c'est vrai que les deux technologies (JDO et Hibernate) en sont plus ou moins au mme point. Et je ne sais vraiment pas laquelle des deux choisir. J'ai besoin de vos arguments et retours d'exprience plus que jamais.

----------


## FreshVic

Dans la livre Hibernate 3 d'Anthony patricio (je crois) , il dit qu'il est fort probable que SUN ne fasse plus evoluer JDO pour se concentrer sur EJB 3 dont Hibernate seras l'une des premiere implementation .

Alors j'imagine qu'anthony patricio est un peu parti pris, mais bon sachant que EJB 3 inclu le mapping OR, pourquoi continuer a maintenir JDO ???

----------


## n00bi

Donc si je rsume la situation :

Avantage de Hibernate par rapport  JDO:

- Hibernate est un framework OpenSource. JDO est une spcification gratuite qui connat des implmentations OpenSource.

- Le HQL est plus une meilleure adaptation du SQL que le JDOQL

- Hibernate connat une plus grosse communaut que JDO

- Hibernate a t choisit pour servir de base de dveloppement pour la persistance des EJB 3.0

- Hibernate offre une voix de sortie facilite aux dveloppeurs qui voudraient se tourner vers du dotNet (via NHibernate).

C'est ce que je retiens. Qui confirme ? Qui infirme ?

Merci de laisser vos avis  ::):

----------


## lunatix

surtout, JDO n'a jamais vraiment demarr, et les implementations actuelles sont en train de se tourner vers EJB3. donc... tu peux lire www.application-servers.com dont certains commentaires sont assez proches de ce que je pense.

pour hibernate NHibernate, je ne pense pas. hibernate est en version3 et Nhibernate pour le moment c'est du hibernate2 qui a quand meme pas mal de difference.

----------


## n00bi

Oui mais EJB n'est pas adapt pour une application standalone alors qu'hibernate l'est. 

En ce qui concerne Hibernate et NHibernate, je pense que bien qu'il y ait des diffrences entre les deux, la passage de Hibernate vers NHibernate doit se faire plus facilement que JDO vers un techno de mapping pour dotNet. 

Est-ce qu'on va passer d'un duel JDO / Hibernate  un duel Hibernate / EJB 3.0 ? Ou bien  une collaboration Hibernate EJB 3.0 ?

----------

