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

Hibernate Java Discussion :

Persister mes objets métiers modifés


Sujet :

Hibernate Java

  1. #1
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut Persister mes objets métiers modifés
    Bonjour,
    A chaque fois que j'ai l'impréssion de comprendre la bonne architecture a utiliser dans mon appli, je tombe sur un porblème que je ne sais pas comment résoudre !

    Pour résumer mon architecture actuelle :
    - Un DAO basé sur JPA et qui dialogue grace est des objets Beans (des pojos annotés)
    - Un Service qui fait des appels sur mon DAO, récupère des Beans et les transforme en objets métiers.
    - Une interface graphique, qui fait des appels sur mon service bet récupère les objets métier pour les afficher.

    Mon problème est que je ne sais pas comment rattacher un objet métier qui aurait été modifié, autant donner que l'objet bean à l'origine, n'existe plus (nouvelle session hibernate)


    Alors, je suis ok pour ne pas utiliser mes objets beans partout dans l'application, ni persister directement mes objets métier, mais la je seche sur ce problème de mise à jour

    Merci d'avance

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je ne suis pas certain d'avoir bien compris ton problème mais je vais essayer d'y répondre.
    Dans ta couche de services, tu peux écrire des méthodes de modification
    d'objets. Ces méthodes peuvent charger un objet (load par exemple) pour l'attacher à une session Hibernate. Tu les modifies dans la foulée.

    Je ne vois pas ce qui te pose problème.

  3. #3
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Non tu n'as pas compris, mais j'ai pas été tres clair.

    Mon problème est de ne pas savoir comment réinjecter les modifications de mon objet métier dans un objet hibernate (que j'ai appellé objet bean) qui n'existe plus du fait de la nouvelle session hibernate.
    Même si j'en recrée un moi même, comment va til savoir quelle ligne mettre a jour dans la bdd ?
    Ou alors le fait de garder l'ID entre le passage de l'objet bean à l'objet metier, puis objet metier à l'objet bean, suffit pour pouvoir faire un merge ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    Je ne crois pas que tu puisse faire un merge que sur un objet dont tu n'as plus la session hibernate qui ta servi à le recuperer.
    Donc si cela est exacte tu dois :
    • Soit conserver ton objet session pour pouvoir le mettre à jour
    • conserver l'id dans ton objet que tu transfere, puis re-charger cette objet, le mettre à jour avec test nouvelles données, puis faire un merge


    Bon courrage.

    Louis

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Comme l'a dit ltournayre, il suffit de garder l'id de tes objets.
    Du coup, rien de compliqué.
    Le plus chiant, c'est la conservation de ses ids pour une application Web.
    Ca peut être pénible à implémenter mais ça se fait bien.

  6. #6
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Citation Envoyé par ltournayre
    Bonjour,

    Je ne crois pas que tu puisse faire un merge que sur un objet dont tu n'as plus la session hibernate qui ta servi à le recuperer.
    Donc si cela est exacte tu dois :
    • Soit conserver ton objet session pour pouvoir le mettre à jour
    • conserver l'id dans ton objet que tu transfere, puis re-charger cette objet, le mettre à jour avec test nouvelles données, puis faire un merge


    Bon courrage.

    Louis
    Ok je m'en doutais, mais je voulais en avoir le coeur net.
    C'est quand meme lourd de devoir rechager l'objet pour ensuite le modifier et pouvoir le persister.

    Merci a tous les deux

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ce n'est pas si lourd que ça.
    Soit tu "load" ton objet par l'id et tu modifies ton objet.
    Soit tu "merge" ton objet pour le reassocier à une session et tu le modifies.
    Les modifications sont prises en compte au commit (selon configuration).

  8. #8
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Ba si c'est c'est lourd puisse qu'en terme de requete ca fait faire un select puis un update, alors qu'un update suffit.
    Merge sert a rattacher un objet détaché !
    Etant donner que je ne détache aucun objet, je me demande s'il serait possible de créer mon propre nouvelle objet, lui assigner le même ID, et faire un merge dessus pour la rattacher ?

    Faut que j'essaye je serais fixé

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tu ne détaches peut être pas explicitement tes objets, mais ils le sont, quand ta session se termine.
    Dans ce cas, il te faut bien un merge.

    Je pense que c'est la façon de faire proprement.
    Ce que tu proposes me semble plus être de la bidouille, mais ce n'est que mon point de vue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Enregistrer les modifications du Datagrid dans mes objets
    Par lerieure dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 21/09/2012, 16h24
  2. Serialiser les méthodes de mes objets métiers
    Par rastamath69 dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 19/11/2010, 11h00
  3. Mes objets ne sont pas persistés
    Par JulienZ dans le forum JPA
    Réponses: 1
    Dernier message: 16/08/2009, 14h47
  4. [Strategie]Classes de mapping & Objets métier
    Par yanis97 dans le forum JDBC
    Réponses: 19
    Dernier message: 16/05/2005, 09h57
  5. [Struts][DynaActionForm et persistance des objets]
    Par jcos dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/12/2004, 09h15

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