Comment procédez vous pour maintenir votre mapping Objet / Relationnel
Pendant la vie de vos applications Java ?

Le , par Ricky81, Expert éminent sénior
Bonjour,

Il existe 2 approches majeures dans le mapping Objet Relationnel :
  • partir de la base de données et générer ses objets mappés avec les outils complémentaires au framework utilisé
  • mettre en place son modèle objet et s'appuyer sur configuration (annotations / xml) du mapping pour créer / mettre à jour sa base de données


Et il y a bien entendu un monde entre les deux, comprenant une approche moins outillée, et également une approche moins méthodique (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 répandue hors initialisation (pour ceux qui démarrent avec un modèle objet / relationnel concu en amont) et d'échanger sur les raisons, avantages et inconvénient.
N'hésitez pas à nuancer dans votre commentaire la phase d'initialisation de celle de maintenance évolutive.


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de natha natha - Membre expert http://www.developpez.com
le 29/03/2010 à 11:50
Hello,

J'ai voté pour une maj manuelle du modèle relationnel puis maj manuelle aussi des objets.

On a des outils pour la génération initiale basique des objets à partir du modèle relationnel.

Difficile de faire mieux car on a greffé l'application sur un modèle relationnel existant et mal conçu.

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 annotés. Mais n'ayant aucune expérience, je ne sais pas si c'est la meilleure solution, je la trouve cependant élégante.

++
Avatar de tchize_ tchize_ - Expert éminent sénior http://www.developpez.com
le 29/03/2010 à 12:02
mise à jour manuel du modèle objet (suite aux besoins d'analyse) suivi d'une mise à jour manuelle de la DB (pour avoir le control sur les shéma ainsi créé). On décide ce dont on a besoin dans le shéma objet. Ensuite on décide comment on va stocker ça, et puis seulement, le mapping se plie à la paire ainsi créée. Sinon, par expérience, 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)
Avatar de jmoutsinga jmoutsinga - Candidat au Club http://www.developpez.com
le 29/03/2010 à 13:03
C'est plutôt on (l'architecte technico-fonctionnel) réfléchit à ce que l'on veut stocker et comment on veut le stocker (il utilise son outil pour la modélisation de cette base) et possède son référentiel.
Puis, on se voit, on discute du schéma. Une fois nos violons accordés, un initial du modèle objet est généré 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 modèle relationel puis la mise à jour du modèle objet applicatif.
C'est plutot lourd mais ca marche bien. Vu qu'il faut de toute facon faire avec un existant toujours plus gros...
Avatar de nicorama nicorama - En attente de confirmation mail http://www.developpez.com
le 29/03/2010 à 14:03
Je fais une mise à jour, et je génère mes entities via Netbeans, qui écrase les anciennes versions.
Mes objets métiers sont créés via des Crud ou Experts qui pointent sur les entities, et l'ide montre en général rapidement où sont les mises àjour nécessaires à faire dans les Crud/Experts.
Avatar de Kihmé Xs Kihmé Xs - Membre averti http://www.developpez.com
le 29/03/2010 à 14:35
j'ai un mapping à réaliser (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é
Avatar de Molos Molos - Membre régulier http://www.developpez.com
le 29/03/2010 à 14:42
Citation Envoyé par Kihmé
j'ai un mapping à réaliser (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
Avatar de mrjay42 mrjay42 - Membre habitué http://www.developpez.com
le 29/03/2010 à 17:10
Sur mon dernier projet : PHP5/Zend/postgreSQL on le faisait à la main.
La taille du projet étant assez réduite et n'était pas prévu pour augmenter en taille dans l'avenir, on est resté en mode manuel.

Au début c'était plutôt le modèle de données qui conditionnait les objets
Par la suite, ce sont les besoins concernant les objets qui étaient à l'origine des modifications...
Avatar de Patriarch24 Patriarch24 - Membre expérimenté http://www.developpez.com
le 30/03/2010 à 9:10
Dans la mesure du possible, je fais les modifs de mon modèle objet (à la main ), et les outils me permettent de modifier les modèle 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 généré).
Avatar de Tcharl Tcharl - Membre actif http://www.developpez.com
le 30/03/2010 à 17:50
Perso, je créée 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 génération 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 même avec vos technos, quitte à y passer 3 mois en autarcie complète, le jeu en vaut la chandelle, tant au niveau apprentissage qu'au niveau résultat!
Avatar de tamiii tamiii - Membre habitué http://www.developpez.com
le 31/03/2010 à 11:59
J'ai déjà testé plusieurs méthodes :

- générer le mapping/business layer + DAO Hibernate/Spring avec Hibernate POJO Generator : très pratique mais c'est un peu l'usine à configurer pour permettre une génération correcte. L'outil se connecte en JDBC à la bdd et génère toute la couche de persistence - on peut relancer une tâche 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 méthode utilisée 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 entités. 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.
Offres d'emploi IT
Ingénieur sécurité des systèmes d'information drone (2 postes à pourvoir) H/F
Safran - Ile de France - Éragny (95610)
Data scientist H/F
Safran - Ile de France - Magny-les-Hameaux (78114)
Chargé(e) de mission au CERT Société Générale (H/F)
Société Générale - Ile de France - Val-de-Marne

Voir plus d'offres Voir la carte des offres IT
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -