# Java > Gnral Java > Persistance des donnes >  [JDO] [Conseil]Quelle Implmentation ?

## hamed

Bonjour,
je m'apprete a faire du mapping relationnel - objet dans le cadre d'un  projet de moyenne envergure.
Je souhaite utiliser JDO
Quelle est selon VOUS l'implementation la plus interressante (simplicite,portabilite sur diff SGBDR)?

HIBERNATE?
VERSANT?
LIDO?
 autre?

 mon projet contient une trentaine de table;
 je doit pouvoir Basculer entre Sql2000 server,MySql, PostGreSql .... au gr des decideurs ( j' ai bascul une appli dont la persistance etait gre " a la main" avec du JDBC depuis SQL2000server vers MySql et je recommencerais  pas....)

a cet instant j 'utilise MySql, mais attendu que cet outils ne gere pas l'integrit referentiel il se  pourrait que dans quelques moi on me demande de passer sous PostGgre !

mrci a VOUS TOUS !

----------


## austin P.

> Bonjour,
> je m'apprete a faire du mapping relationnel - objet dans le cadre d'un  projet de moyenne envergure.
> Je souhaite utiliser JDO
> Quelle est selon VOUS l'implementation la plus interressante (simplicite,portabilite sur diff SGBDR)?
> 
> HIBERNATE?


oublie ce n'est pas jdo (au meme titre que castor jdo d'ailleurs)




> VERSANT?
> LIDO?
>  autre?


en fait tout dpend de ton besoin (update en masse, load massif, monte en charge,...) : dfinie les et test ces cas de figures.
je sais c'est con comme rponse mais le risque en posant cette question c'est que chacun te donne son avis sur le produit qu'il utilise sans comparaison possible. L par exemple je peut te dire que j'ai apprci Lido mais difficile de le comparer puisque c'est le seul que j'utilise.





> mon projet contient une trentaine de table;
>  je doit pouvoir Basculer entre Sql2000 server,MySql, PostGreSql .... au gr des decideurs ( j' ai bascul une appli dont la persistance etait gre " a la main" avec du JDBC depuis SQL2000server vers MySql et je recommencerais  pas....)


je compatie entirement 




> a cet instant j 'utilise MySql, mais attendu que cet outils ne gere pas l'integrit referentiel il se  pourrait que dans quelques moi on me demande de passer sous PostGgre !


faux : mysql gre l'intgrit refrenciel

bon courage   ::wink::

----------


## bmoussaud

Rapidement:
Lido est une tres bonne implmentation stable et performante et Commerciale.
Du cot OpenSource est ouverture sur "ce que pourra etre JDO 2.0" regarde JPox !

----------


## hamed

hum ....HIBERNATE n'est pas une implemenation de JDO .... c'est quoi une variante de HIBERNATUS  avec defunes?

et ... MySql  gere l'integrite referentiel ??? je peux savoir quelle version??

----------


## austin P.

JDO n'est qu'une spcification : l'implemente qui veut 
nb : hibernate est plus ancien que la norme JDO 

concernant mysql cela fait un bon moment que c'est gr, comme les transactions...

et bientot les procdures stockes.

http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html




> Starting from MySQL 3.23.50, you can also associate the ON DELETE CASCADE or ON DELETE SET NULL clause with the foreign key constraint. Corresponding ON UPDATE options are available starting from 4.0.8. If ON DELETE CASCADE is specified, and a row in the parent table is deleted, InnoDB  automatically deletes also all those rows in the child table whose foreign key values are equal to the referenced key value in the parent row. If ON DELETE SET NULL is specified, the child rows are automatically updated so that the columns in the foreign key are set to the SQL NULL value. SET DEFAULT is parsed but ignored.

----------


## bmoussaud

JDO n'est pas une norme mais une spcification   ::wink::  
Concernant l'anciennet hibernate / jdo je pense que jdo est plus ag, il porte quand meme le n12 des JSR 
http://jcp.org/aboutJava/communitypr...012/index.html
et EJB 3 porte le n 220

----------


## austin P.

peut etre mais le final realease date du 30 avril 2002 
http://www.jcp.org/en/jsr/detail?id=12 

alors que le projet hibernate est de 2001

----------


## viena

> Je souhaite utiliser JDO


Pourquoi ? Y a t il des contraintes particulires qui t'y oblige? choix personnel ?

Hibernate tend  devenir incontournable dans le monde J2EE pour le mapping. Bien sur, je ne veux pas dire qu'il faut utiliser hibernate parce que tout le monde l'utilise. Mais de nombreux travaux, normalisations, associations... sont mis en place pour hibernate tant donne son ampleur (CF EJB3). 

Donc, si tu dsire te former, il est peut tre intressant d'utiliser Hibernate.

----------


## bmoussaud

> peut etre mais le final realease date du 30 avril 2002 
> http://www.jcp.org/en/jsr/detail?id=12 
> 
> alors que le projet hibernate est de 2001


La  spcification JDO a commenc tres tres tot ! environ vers le dbut 2000. J'ai d'ailleurs des versions notes 0.4 ayant la date de Octobre 2000. Par contre je suis d'accord avec toi la release 1.0 n'a abouti que vers le 30 avril 2002....et ceci je ne l'explique pas ...  ::?:

----------


## hamed

Ecoutez merci de vos reponses , mon choix se penche vers HIBERNATE.Je le trouve plus saint comparer a d'autre implementation que je ne citerais pas ( avec enhancement de code, ,fichier XML alambiqu ...)

Pour repondre a VIENA je dirais que je veux utiliser JDO parce que :

- coder de faon redondante la meme logique d'acces a une base de donnes pour charger ou utiliser des objets metiers  via JDBC a prend du temps et  a apporte pas grand chose (intellectuellement )une fois qu'on a compris  comment JDBC fonctionne.

- se retaper le meme codage avec les variantes SQL si on change de SGBDR a devient franchement soulant 

- parcourrir des centaines de lignes de codes pour ajouter ou suprrimer a un attribut d'un bean en fonction d'une modification du MCD a me rend franchement nerveux

- les EJBS centit c 'est une plomberie monstre  a mettre a place et aucune coherence entre conteneurs ( essaie d'implementer une relation 1-N avec les CMR tu te feras ton opinion ) et de plus  mes projets n'ont pas de mont en charge colossale dans l'utilisation pour justifier la mise en place d'objets distribus.

donc JDO a me semble  adapt.
voila

----------


## viena

Je pense que tu confonds JDO et mapping.

Le mapping est ce que tu veux faire (et je comprend trs bien tes raisons).

JDO est une spcification (comme le dit bmoussaud plus haut) concernant le mapping.

Hibernate n'est pas sur la norme JDO mais sur sa propre norme (qui va surement se gnraliser, vu que c'est la norme choisi pour les EJB3).

Un petit tag rsolu stp  ::wink::   merci d'avance

----------


## fabriceMerc

Mme si j'ai dja cod dans des applications J2EE multi-couche aucune n'utilisais le O/R mapping et actuellement pour un projet je m'interesse beaucoup  cette solution, seulement en lisant les tutos sur le site :

http://bmoussaud.developpez.com/tutoriel/java/jdo/

et 


http://defaut.developpez.com/tutorie...pse/hibernate/

je n'arrive pas  discerner la diffrence/ressemblance entre JDO et hibernate :-( quelqu'un pourrait mieux eclairer le sujet ?
Et autre question dans le cas ou on a une base de donns qui contient pas mal de procdures /triggers etc ... hibernate est-il vraiment utile ?

----------


## hamed

Pour repondre a frederiqueMerc je dirais :
JDO est une psecification permettant de faire du mapping "Relationnel / Objet"

Hibernate serait  " une " implemenation de JDO (au mettre titre que Lido,Versant,Kodo etc ...) ..... 
mais il semblerait  , si j'ai bien compris qu'Hibernate  obeisse a sa propre specif car plus ancien que JDO ou qq chose comme a ....donc Hibernate c'est "un moyen de faire du mapping relationnel - objet " semblable mais independante de JDO. enfin si j'ai compris ....

----------


## austin P.

> Pour repondre a frederiqueMerc je dirais :
> JDO est une psecification permettant de faire du mapping "Relationnel / Objet"
> 
> Hibernate serait  " une " implemenation de JDO (au mettre titre que Lido,Versant,Kodo etc ...) ..... 
> mais il semblerait  , si j'ai bien compris qu'Hibernate  obeisse a sa propre specif car plus ancien que JDO ou qq chose comme a ....donc Hibernate c'est "un moyen de faire du mapping relationnel - objet " semblable mais independante de JDO. enfin si j'ai compris ....


ouaip
comme on n'en a discut plus haut avec bmoussaud, la spec JDO  commenc avant le projet hibernate mais la final release (la v1 quoi) n'est sortie seulement en 2002. A mon avis les gars d'hibernate en ont eut marre d'attendre   ::zzz::  .

Mais au final le but pour JDO et Hibernate est le mme : faire du mapping objet. A la petite diffrence c'est que JDO ne se limite pas au SGBDR.

----------


## ceddup

Toujours selon Rod Johnson et son merveilleux livre J2EE Development without EJB, p270, Gavin King le leader de Hibernate fait partie du groupe d'experts chargs de la spcification de JDO 2.0. JDO est une spcification large qui concerne le problme de la persistance des objets java sur tous types d'entrepts de donnes (pas seulement les bases de donnes relationnelles). Cette spcification va contenir une partie appele JDO/R qui concerne le mapping objet/relationnel. Hibernate tant le produit gratuit le plus aboutis  ce jour et tant utilis par un trs grand nombre de projets, il semble tre un bon choix si l'on veut crire avec des produits gratuits. Il rejoindra trs probablement l'API JDO/R ds qu'elle sera dfinie. TopLink et LIDO (vrai JDO) sont de trs bons produits commerciaux, qui ont fait leurs preuves, LIDO ayant l'avantage significatif d'tre dvelopp par une quipe franaise, si je ne m'abuse.
Voil pour ce que j'en sais...

J'ai un blog!

----------


## manu2000b

[quote="austin P."]


> la spec JDO  commenc avant le projet hibernate mais la final release (la v1 quoi) n'est sortie seulement en 2002. A mon avis les gars d'hibernate en ont eut marre d'attendre   .


Hehe, ce n'est pas vraiment la raison principale.

----------


## manu2000b

> Toujours selon Rod Johnson et son merveilleux livre J2EE Development without EJB, p270, Gavin King le leader de Hibernate fait partie du groupe d'experts chargs de la spcification de JDO 2.0. [...] Il rejoindra trs probablement l'API JDO/R ds qu'elle sera dfinie. TopLink et LIDO (vrai JDO)


Gavin ne fait plus partie du group d'expertise JDO. Il est membre du groupe d'expertise EJB3.
Hibernate embrasse(ra) la partie mapping O/R de la spec EJB3.
Voir http://www.hibernate.org/About/RoadMap et http://annotations.hibernate.org

PS: Toplink n'implmente galement pas la norme JDO

----------


## austin P.

> Hehe, ce n'est pas vraiment la raison principale.


allez emmanuel bernard  ::wink::   toi qui fait partie du projet, dis nous pourquoi

----------


## manu2000b

Il ne connaissait que les EJB et JDBC ;-)
Plus srieusement
Il existe quelques diffrences fondamentales entre l'approche JDO (1) et les approches prises par Hibernate et Toplink
Le fait de forcer une implmentation de fait dans la spec (implmenter PersistentCapable par bytecode enhancement - on peut le faire explicitement mais bon)
Une approche agnostique par rapport  la technologie de persistence (DB, XML etc) qui ne devrait pas faire perdre de vue qu'une base de donne est derrire pour persister/rcuprer les infos.
Des marketing features: l'quipe hibernate s'est toujours concentr sur les fonctionnalits concrtement utiles quitte  se mettre un certain nombre de gens  dos. Et on a vu des tableaux comparatifs relativement hallucinant venant de grands noms de JDO
Un modle de requtage mlangeant deux concepts : l'approche API et l'approche langage qui au final ne nous satisfait pas. Un bon systme de requtage devrait ressembler le plus possible au SQL ce que fait HQL, EJBQL)
La notion d'identit*s* en JDO (surrogate, application, natural etc).
... Vous trouverez surement d'autres arguments dans les blogs d'hibernate, sur le forum voire mme sur TSS  ::roll::

----------


## bmoussaud

> PS: Toplink n'implmente galement pas la norme JDO


Non   ::nono::

----------

