# Java > Gnral Java > Persistance des donnes >  Comment procdez vous pour maintenir votre mapping Objet / Relationnel pendant la vie d'une application ?

## Ricky81

Bonjour,

Il existe 2 approches majeures dans le mapping Objet Relationnel :
partir de la base de donnes et gnrer ses objets mapps avec les outils complmentaires au framework utilismettre en place son modle objet et s'appuyer sur configuration (annotations / xml) du mapping pour crer / mettre  jour sa base de donnes

Et il y a bien entendu un monde entre les deux, comprenant une approche moins outille, et galement une approche moins mthodique (combinaison des 2 approches par mises  jour dans un sens ou dans l'autre selon la nature de la mise  jour).

L'objet de ce sondage est de voir quelle est la pratique la plus rpandue hors initialisation (pour ceux qui dmarrent avec un modle objet / relationnel concu en amont) et d'changer sur les raisons, avantages et inconvnient.
N'hsitez pas  nuancer dans votre commentaire la phase d'initialisation de celle de maintenance volutive.

----------


## natha

Hello,

J'ai vot pour une maj manuelle du modle relationnel puis maj manuelle aussi des objets.

On a des outils pour la gnration initiale basique des objets  partir du modle relationnel.

Difficile de faire mieux car on a greff l'application sur un modle relationnel existant et mal conu.

Si je devais partir sur un projet neuf, je pense que je m'orienterais vers du JPA avec maj de la base depuis les objets java annots. Mais n'ayant aucune exprience, je ne sais pas si c'est la meilleure solution, je la trouve cependant lgante.

++

----------


## tchize_

mise  jour manuel du modle objet (suite aux besoins d'analyse) suivi d'une mise  jour manuelle de la DB (pour avoir le control sur les shma ainsi cr). On dcide ce dont on a besoin dans le  shma objet. Ensuite on dcide comment on va stocker a, et puis seulement, le mapping se plie  la paire ainsi cre. Sinon, par exprience, trop de crasse en db quand on fait pas le relationnel  la main (on fait alors le mapping  la vavite , ce qui implique des tables en trop ou mal contraintes bien souvent)

----------


## jmoutsinga

C'est plutt on (l'architecte technico-fonctionnel) rflchit  ce que l'on veut stocker et comment on veut le stocker (il utilise son outil pour la modlisation de cette base) et possde son rfrentiel.
Puis, on se voit, on discute du schma. Une fois nos violons accords, un initial du modle objet est gnr via des outils (actuellement, j'utilise la perspective JPA d'Eclipse (anciennement Dali). Puis, l'enrichissement et la maintenance est faites  la mano (de chaque cot).
Avec d'abord une mise  jour du modle relationel puis la mise  jour du modle objet applicatif.
C'est plutot lourd mais ca marche bien. Vu qu'il faut de toute facon faire avec un existant toujours plus gros...

----------


## nicorama

Je fais une mise  jour, et je gnre mes entities via Netbeans, qui crase les anciennes versions.
Mes objets mtiers sont crs via des Crud ou Experts qui pointent sur les entities, et l'ide montre en gnral rapidement o sont les mises jour ncessaires  faire dans les Crud/Experts.

----------


## Kihm Xs

j'ai un mapping  raliser (en php), je trouve peu d'exemple de classe (je souhaite le faire  la main) afin d'tre sur de ce que je fais. Je profite donc que le sujet soit abord pour savoir si vous n'auriez pas un peu de lecture  me conseiller ou des exemples  me montrer.

Merci d'avance

Kihm

----------


## Molos

> j'ai un mapping  raliser (en php), je trouve peu d'exemple de classe (je souhaite le faire  la main) afin d'tre sur de ce que je fais. Je profite donc que le sujet soit abord pour savoir si vous n'auriez pas un peu de lecture  me conseiller ou des exemples  me montrer.
> 
> Merci d'avance
> 
> Kihm


Tu as des exemples avec Doctrine sur le site officiel  ::):

----------


## mrjay42

Sur mon dernier projet : PHP5/Zend/postgreSQL on le faisait  la main.
La taille du projet tant assez rduite et n'tait pas prvu pour augmenter en taille dans l'avenir, on est rest en mode manuel.

Au dbut c'tait plutt le modle de donnes qui conditionnait les objets
Par la suite, ce sont les besoins concernant les objets qui taient  l'origine des modifications...

----------


## Patriarch24

Dans la mesure du possible, je fais les modifs de mon modle objet ( la main  ::ccool:: ), et les outils me permettent de modifier les modle relationnel ; cependant, c'est plus une aide qu'une fin en soi, le DBA se chargeant au final d'crire le script qui va bien ( partir de celui gnr).

----------


## Tcharl

Perso, je cre mon diagramme de classe avec emf, et je me suis fait un template acceleo qui me fait le mapping jpa, les services de persistance et la gnration du crud avec tests. Roo m'a donn l'inspi, j'en ai fait un  ma sauce pour mes besoins (maven, spring 3, richfaces, cxf, jsf2, jpa2 et hibernate). 
Je ne saurai vous conseiller de faire la mme avec vos technos, quitte  y passer 3 mois en autarcie complte, le jeu en vaut la chandelle, tant au niveau apprentissage qu'au niveau rsultat!

----------


## tamiii

J'ai dj test plusieurs mthodes :

- gnrer le mapping/business layer + DAO Hibernate/Spring avec Hibernate POJO Generator : trs pratique mais c'est un peu l'usine  configurer pour permettre une gnration correcte. L'outil se connecte en JDBC  la bdd et gnre toute la couche de persistence - on peut relancer une tche Ant pour mettre  jour nos sources java  chaque fois qu'on modifie l'architecture de la bdd. Je recommande cet outil mais n'ai jamais test sur des applis critiques, peut-tre que d'autres personnes pourraient donner leur feedback? http://hibernatepojoge.sourceforge.net/

- utiliser le hbm2ddl  update dans hibernate, avec les annotations. C'est bien mais a devient vite le bordel si on bosse  plusieurs sur le projet.

- enfin, la mthode utilise l o je bosse - la moins flexible mais la plus fiable je pense : design de la bdd  la main et mapping manuel avec annotations dans les entits. Si quelqu'un change l'archi des tables tout plante, c'est normal. Mais au moins on est au courant que notre code n'est plus synchro avec la bdd.

----------


## Invit

dans mon projet actuel je modifie mes objets java  la main suivant les changements dtects depuis la prcdente itration et je lance un outil pour me gnrer mes script SQL. J'utilise de base hibernate tools pour gnrer les scripts DDL mais ces fichiers ne sont pas aux normes oracle voulue donc j'ai amlior l'outils pour normaliser les SQL et ca marche niquel.

Etant donn que les changements sont trs nombreux je me voyait mal reprendre les modifs  la main ct java et SQL.

Ce procd est trs rapide et avec le plugin JPA d'clipse c'est du caviar (mme si on doit tout de mme utiliser des annotations spcifique hibernate : @ForeignKey et autres...)

----------

