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 :

[Hibernate 2] Bean session et persistance DAO


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut [Hibernate 2] Bean session et persistance DAO
    Salut,

    Je développe une application web en utilisant les frameworks hibernate2 et Spring et Hibernate 2.0.

    Le contexte est le suivant:

    - Dans les tables de la BD, j'ai une relation père fils (disant par exemple A et père de B) ce qui se traduit par une liste des classes B dans la classe A.
    - J'ai déclarer un bean session dans lequel je récupère la classe A (la récupération de la liste de B se fait automatiquement).
    - j'ai une page JSF dans laquelle j'ai mis une table où j'affiche les attributs de la liste des classes B avec la possibilité de suppression de l'une d'elle.

    Le problème:

    dans le listener de suppression je peux récupérer l'élément B sélectionné mais je doit le supprimer et dans la table et dans la liste sinon la table affichée dans la page JSP ne prend en considération le changement fait.

    avez vous une idée pour n'exécuter la suppression qu'une seule fois soit dans la liste de classe B contenu dans la classe A ou bien dans la base de donnés.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de eldran64
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 344
    Par défaut
    Bonjour,

    La couche de persistence permet de manipuler des données via des objets correpondant.

    Si tu demandes à ton application de supprimer des données, fait le d'abord sur la couche de persistence pour que les données soient supprimées de la table. Ensuite actualise tes listes pour obtenir le nouveau résultat.

    Bon courrage!

  3. #3
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut
    Salut,

    merci pour la réponse.
    d'après ce que j'ai compris, il faut faire les changement au niveau des classes de persistances et au même temps faire appel au méthodes de mise à jour dans la BD. En fait j'essaye d'éviter.

    En fait j'ai rapporté les changement sur les classe de persistance au niveau des méthodes d'accès à la BD par exemple et en gardant toujours le modèle décris ci-dessus:

    pour créer un nouveau fis B de A, j'ai mis une méthode addBToA(A a,B b) dans laquelle je relie les instances a et b et je sauvegarde b dans la BD, ainsi la tâche devient facile dans la couche métier. Mais Je me demande si c'est cohérent avec l'architecture 3 tières ou non.

    Merci d'avance.

  4. #4
    Membre éclairé Avatar de eldran64
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2008
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 344
    Par défaut
    Quand tu sauvegarde un objet A via la persistence, même si celui-ci contient le B, le B ne sera probablement pas sauvegarder. Il faut donc sauvegarder le B et le A.

    Les deux sont reliés au niveau de la jvm avec une relation parent/enfant et sont reliés dans la bd avec des identifiants.

    Au niveau de la BD:
    Si le A est le père du B, alors il possèdera un identifiant (un numéro unique de préférence) correspondant au B. Et le B possèdera ce fameux identifiant. Les identifiants dont je te parle sont généralement des clés primaires qui permettent d'identifier de manière unique chaque entrée de la table.

    la table A contient:
    ID, Nom, etc... et IdDuB

    la table B contient:
    ID, Nom etc...

  5. #5
    Membre éclairé Avatar de archer
    Ingénieur développement logiciels
    Inscrit en
    Mai 2007
    Messages
    338
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 338
    Par défaut
    Salut,

    Je crois que je ne me suis pas bien exprimé.

    Je veux éviter d'écrire dans les classes métier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HbernateInter hInterf= new HbernateInter();/* classe où j'ai mis les méthode de sauvegarde et de mise à jour des classe A et B */
    B b= new B();
    b.setA(a);
    a.addB(b);
    hInterf.update(b);
    ça fait beaucoup de code à chaque fois.
    ce que je veux, c'est seulement ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HbernateInter hInterf= new HbernateInter();/* classe où j'ai mis les méthode de sauvegarde et de mise à jour des classe A et B */
    B b= new B();
    hInterf.addBtoA(b);
    et dans la méthode addBtoA() que je fais je reste du traitement.

    Est ce que c'est cohérent avec l'architecture 3 tières ou non?

Discussions similaires

  1. [HIBERNATE] recuperer le session.save(.. .)
    Par MicroPuce dans le forum Hibernate
    Réponses: 2
    Dernier message: 24/06/2006, 09h17
  2. [Hibernate] Session & Objets persistants
    Par Gob4 dans le forum Hibernate
    Réponses: 3
    Dernier message: 22/05/2006, 14h13
  3. [HIBERNATE] pattern Open Session in View
    Par _beber85 dans le forum Hibernate
    Réponses: 1
    Dernier message: 10/05/2006, 10h04
  4. [Struts] Recuper une référence d'un bean session
    Par nicoo dans le forum Struts 1
    Réponses: 6
    Dernier message: 07/09/2005, 14h26
  5. [Servlet - JSP] bean session sous was
    Par piwai dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/08/2005, 10h00

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