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

Persistance des données Java Discussion :

Différence entre l'objet de l'application et l'objet en bdd


Sujet :

Persistance des données Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut Différence entre l'objet de l'application et l'objet en bdd
    Bonjour,

    J'ai un petit problème et je ne vois pas techniquement comment le régler:

    Contexte :
    Je développe un projet permettant de créer des entraînements avec la possibilité de récupérer un entrainement déjà sauvegardé en BDD.

    Technique:
    J'utilise le binding via l'API beansbinding pour mapper mes attributs.
    J'affiche dans une combobox l'attribut "team" d'un objet "Training" que je suis allé récupérer de ma base de données (Image 1 et 2).
    Je modifie le champ pour pointer sur une autre équipe mais je ne sauvegarde pas en base. (Image 3)

    Quand j'affiche ma liste d'entrainement enregistrée en base (Image 4), l'entrainement que je viens de modifier affiche la modification dans la liste. Cela provient du fait que ces 2 objets ont le même hashCode car hibernate le calcul en fonction de l'Id.

    Question:
    Comment je pourrai m'en sortir pour n'afficher que ce qu'il y a en base c-a-d sans prendre en compte les modifications de l'entrainement en cours?


    Merci.
    Spiritkill
    Images attachées Images attachées     

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    tu peux cloner l´objet en question, la tu travailles seulement sur le clone.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Le problème est que j'ai déjà redéfini cette méthode pour mettre à null l'id et cloner les exercices car un entrainement contient une liste d'exercice et je voulais cloner aussi les exercices en cascade si on clonait un entrainement.

    De plus est-ce que en clonant mon objet puis en le stockant en bdd via un "merge" hibernate arrive à retrouver l'entrainement d'origine et ne créé pas une nouvelle ligne?

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    non, tu clones ta bean, tu fais tes manipulations et au moment de stocker dans la base, alors tu peux attribuer cette valeur à ton ancienne bean, ensuite tu la sauvegardes dans la base de données.

    Eric

  5. #5
    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 : 44
    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 806
    Points
    48 806
    Par défaut
    c'est compliqué pour pas grand chsoe tout ça.

    Hibernante n'utilise pas hashcode. Par contre il stocke dans ça session que l'objet de type X avec l'id 23, par exemple, est 'xyz'. Du coup, quand tu modifie xyz puis que tu demande à hibernate xyz, il te retourne la valeur qu'il a en mémoire (pour éviter la duplication de donnée en mémoire).


    Dans ton cas, le plus simple est d'avoir deux session. Quand tu affiche la liste des données, tu le fait avec un session. Quand tu modifie des données, tu crée une nouvelle session pour cette création. Quand tout est sauvé, tu ferme les deux sessions.

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Parfait j'ai résolu mon problème.

    Merci pour votre aide.

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

Discussions similaires

  1. Différence entre Application et Session
    Par fet dans le forum ASP
    Réponses: 1
    Dernier message: 08/02/2007, 13h40
  2. Réponses: 11
    Dernier message: 02/09/2006, 01h38
  3. [9iR2] Différence entre une table et une table objet ?
    Par mainecoon dans le forum Oracle
    Réponses: 1
    Dernier message: 16/02/2006, 04h28
  4. Réponses: 2
    Dernier message: 01/05/2005, 14h43
  5. Différence entre SGBD et Serveur d'application
    Par WOLO Laurent dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/06/2003, 08h47

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