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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Votre démarche pour maintenir votre mapping Objet / Relationnel durant la vie de l'application

Votants
49. Vous ne pouvez pas participer à ce sondage.
  • Mise à jour manuelle du modèle objet et mise à jour de la base et des scripts avec un outil

    14 28,57%
  • Mise à jour manuelle de la base de données et génération / mise à jour du modèle objet avec un outil

    7 14,29%
  • Mise à jour manuelle d'un des modèles et gestion de la mise à jour de l'autre via un outil

    1 2,04%
  • Mise à jour du modèle objet puis du modèle relationnel manuellement

    10 20,41%
  • Mise à jour du modèle relationnel puis du modèle objet manuellement

    11 22,45%
  • Mise à jour manuelle des deux modèles sans véritable logique d'ordonnancement

    6 12,24%
Persistance des données Java Discussion :

Comment procédez vous pour maintenir votre mapping Objet / Relationnel pendant la vie d'une application ?


Sujet :

Persistance des données Java

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2003
    Messages : 7 856
    Points : 34 375
    Points
    34 375
    Par défaut Comment procédez vous pour maintenir votre mapping Objet / Relationnel pendant la vie d'une application ?
    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.

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    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.

    ++
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 481
    Points : 48 820
    Points
    48 820
    Par défaut
    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)

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2006
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Mon explérience
    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...

  5. #5
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : juillet 2006
    Messages : 766
    Points : 1 252
    Points
    1 252
    Par défaut
    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.

  6. #6
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : janvier 2007
    Messages : 549
    Points : 492
    Points
    492
    Par défaut
    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é

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2006
    Messages : 102
    Points : 107
    Points
    107
    Par défaut
    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

  8. #8
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    janvier 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2007
    Messages : 126
    Points : 170
    Points
    170
    Par défaut
    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...

  9. #9
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2003
    Messages : 1 047
    Points : 1 632
    Points
    1 632
    Par défaut
    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é).
    En premier lieu, utilisez un moteur de recherche.
    En second lieu, postez sur le forum adéquat !

  10. #10
    Membre averti
    Homme Profil pro
    Expert MDE
    Inscrit en
    janvier 2008
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Expert MDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : janvier 2008
    Messages : 182
    Points : 335
    Points
    335
    Par défaut
    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!

  11. #11
    Membre actif
    Inscrit en
    mars 2007
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : mars 2007
    Messages : 218
    Points : 208
    Points
    208
    Par défaut
    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.
    N'oubliez pas le tag [Résolu] quand nécessaire !

  12. #12
    Invité
    Invité(e)
    Par défaut
    dans mon projet actuel je modifie mes objets java à la main suivant les changements détectés depuis la précédente itération et je lance un outil pour me générer mes script SQL. J'utilise de base hibernate tools pour générer les scripts DDL mais ces fichiers ne sont pas aux normes oracle voulue donc j'ai amélioré l'outils pour normaliser les SQL et ca marche niquel.

    Etant donné que les changements sont très nombreux je me voyait mal reprendre les modifs à la main côté java et SQL.

    Ce procédé est très rapide et avec le plugin JPA d'éclipse c'est du caviar (même si on doit tout de même utiliser des annotations spécifique hibernate : @ForeignKey et autres...)

Discussions similaires

  1. Réponses: 36
    Dernier message: 28/12/2015, 23h31
  2. Réponses: 44
    Dernier message: 05/10/2011, 14h37
  3. Réponses: 10
    Dernier message: 23/02/2011, 00h18
  4. [Struts]comment faites-vous pour enregistrer..
    Par pouss dans le forum Struts 1
    Réponses: 7
    Dernier message: 30/09/2005, 12h55
  5. Réponses: 22
    Dernier message: 22/04/2005, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo