IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Ricky81

0PARTAGES

0  0 
Votre démarche pour maintenir votre mapping Objet / Relationnel durant la vie de l'application
Mise à jour manuelle du modèle objet et mise à jour de la base et des scripts avec un outil
29 %
Mise à jour du modèle relationnel puis du modèle objet manuellement
22 %
Mise à jour du modèle objet puis du modèle relationnel manuellement
20 %
Mise à jour manuelle de la base de données et génération / mise à jour du modèle objet avec un outil
14 %
Mise à jour manuelle des deux modèles sans véritable logique d'ordonnancement
12 %
Mise à jour manuelle d'un des modèles et gestion de la mise à jour de l'autre via un outil
2 %
Voter 49 votants
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.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de natha
Membre expert https://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.

++
0  0 
Avatar de tchize_
Expert éminent sénior https://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)
0  0 
Avatar de jmoutsinga
Candidat au Club https://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...
0  0 
Avatar de nicorama
En attente de confirmation mail https://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.
0  0 
Avatar de Kihmé Xs
Membre confirmé https://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é
0  0 
Avatar de Molos
Membre régulier https://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
0  0 
Avatar de mrjay42
Membre habitué https://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...
0  0 
Avatar de Patriarch24
Membre expérimenté https://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é).
0  0 
Avatar de Tcharl
Membre averti https://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!
0  0 
Avatar de tamiii
Membre actif https://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.
0  0