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

Struts 1 Java Discussion :

code hibernate à placer dans la méthode ActionForward execute de la classe java ?


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 66
    Points
    66
    Par défaut code hibernate à placer dans la méthode ActionForward execute de la classe java ?
    Bonjour,

    Faut-il placer le code hibernate dans la méthode "ActionForward execute" de la classe java de struts ?

    exemple de code Hibernate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    session = HibernateUtil.currentSession();
    tx = session.beginTransaction();
    Query query = session.createQuery("from User u");
    merci

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Ca peut se faire, mais ce serait contraire aux bonnes pratiques du pattern MVC !
    En effet, faire ceci revient à mélanger le Model (code Hibernate) avec le Control (dans Action.execute).
    Le mieux serait de Crér une classe avec une méthode qui contient le code Hibernate, et d'appeler cette méthode depuis Action.execute().

    exemple:

    Dans la nouvelle classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class OpUser {
        public static List users(){
            List u = ....createQuery("From User u").list();
            return u;
        }
     
        public void add(String login, String pwd){
            ...
        }
     
        ...
    }
    et dans ton Action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public ActionMapping execute(...){
        ...
        List l = OpUser.users();//  <== un seul appel à une méthode du couche métier
        ...
        //par exemple, mettre la liste d'utilisateurs dans la session
        request.getSession.setAttribute("users", l);
        ...
    }
    C'est un peu plus long et emmerdant à coder, mais ton code est beaucoup plus propre et tu adhères strictement au MVC !

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 66
    Points
    66
    Par défaut
    d'accord je comprends mieux,
    j'ai 2 questions :
    - on mettrait la classe 'OpUser' dans le package contenant les Dao ?
    - admettons qu'on veuille récupérer un user en fonction d'un prédicat (exemple clause WHERE), comment s'y prendrait-on pour faire une méthode dans la classe 'OpUser' ?

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Q1: Oui, OpUser fait partie du package model, le même qui contient les DAOs.

    Q2: Apparament, tu veux coder une méthode qui te permet de valider un couple (login, mdp) lorsqu'un un utilisateur les fournit dans une page de connexion (corrige moi si je me trompe), ceci peut se faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public class OpUser {
        public static List users(){
            List u = ....createQuery("From User u").list();
            return u;
        }
     
        public User validate(String login, String pwd){
            List l = ....createQuery("From User u Where u.login=? AND u.pwd=?").setString(0, login).setString(1, pwd).list();
            if(l.size()==0)
                    return null;
            else
                    return (User)l.get(0);
        }
     
        ...
    }
    Ainsi, dans execute() de ton Action, tu appeles OpUser.validate() pour vérifier si un compte existe !

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 66
    Points
    66
    Par défaut
    d'accord c'est bien ce que j'imaginais, merci pour ton aide

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2011, 11h08
  2. commande d'execution d'une classe java sous dos
    Par sirine1 dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2007, 14h48
  3. lancer un executable depuis une classe java
    Par k6971 dans le forum Langage
    Réponses: 4
    Dernier message: 21/05/2007, 22h46
  4. Réponses: 5
    Dernier message: 05/05/2006, 09h40
  5. Réponses: 3
    Dernier message: 09/04/2006, 13h04

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