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

Spring Java Discussion :

[STRUTS][HIBERNATE] fichier de conf [Data]


Sujet :

Spring Java

  1. #1
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut [STRUTS][HIBERNATE] fichier de conf
    Bonjour, je réalise une appli avec struts, spring, hibernate.
    C'est ma première appli avec spring et j'ai un peu du mal à voir comment déclarer mes beans (sachant que l'architecture des classes est assez compliquée (du moins pour moi) car j'ai reprise celle d'un exemple que j'ai trouvé sur le même type d'architecture).

    Voila donc l'organisation de mon appli ou ma seule action pour l'instant est une recherche de login dans ma base de donnée :
    - Une jsp affiche un formulaire login/password. (struts)
    - l'action fais appel à une interface iLoginService.
    - Une classe LoginServiceSpringImpl implémente cette interface.
    - Celle-çi contient à son tour une interface ILoginDAO qui est implémentée par une classe LoginHibernateDAO (classe ou la recherche en bdd s'effectue).
    Cette architecture est assez complexe mais apparemment permet de bien séparé chaque couche du modèle MVC et chaque service.

    Pb: je n'arrive pas à faire marcher çà car je ne sais pas quoi déclarer comme bean dans mon fichier de config spring où seul une sessionfactory et un transactionmanager sont déja définit pour l'instant :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <beans>    
        <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="mappingResources">
                <list>
                    <value>fr/gestentrep2/utilisateurs/pojos/Utilisateur.hbm.xml</value>
                    <!--  <value>fr/........./utilisateur.hbm.xml</value>    -->
                </list>
            </property>        
            <property name="hibernateProperties">
                <props>
            <prop key="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</prop>
            <prop key="hibernate.connection.url">jdbc:mysql://localhost/gestentrep2</prop>
            <prop key="hibernate.connection.username">root</prop>
            <prop key="hibernate.connection.password"></prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <!--  <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>-->
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
                    <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
                </props>
            </property>        
        </bean>
     
        <bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory"><ref local="mySessionFactory"/></property>
        </bean>
    </beans>
    Déja là pouvez-vous me dire qu'est-ce qu'il faut déclarer comme bean dans ce fichier et comment les déclarer?

    Maintenant pour les plus motivés, si vous voulez vraiment aller plus loin dans mon code, je vous mets tous les fichiers cités précédemment.

    Action résultant du formulaire :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public class FormulaireLoginAction extends Action {
     
        private ILoginService loginService;
     
        public FormulaireLoginAction() {
            super();
        }
     
        public void setServlet(ActionServlet actionServlet) {
            super.setServlet(actionServlet);
            ServletContext servletContext = actionServlet.getServletContext();
            WebApplicationContext wac =
                WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
            this.loginService = (ILoginService) wac.getBean("myLoginServicesTarget");
        }
     
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     
            FormulaireLoginBean formulaire = (FormulaireLoginBean) form;
            request.setAttribute("nom",formulaire.getNom());
            request.setAttribute("motDePasse",formulaire.getMotDePasse());
     
            // Délégation de service
            Utilisateur theUtilisateur = getLoginService().exists(formulaire.getNom(),formulaire.getMotDePasse());
            if(theUtilisateur!=null) {
                HttpSession session = request.getSession(true);
                session.setAttribute("droits", theUtilisateur.getDroits());
                session.setAttribute("login", formulaire.getNom());
                session.setAttribute("password", formulaire.getMotDePasse());            
            }
     
            return mapping.findForward("index");
        }
     
        protected ILoginService getLoginService() {
            return loginService;
        }
     
    }
    Interface
    ILoginService :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface ILoginService {
        public abstract Utilisateur exists(String login, String password) throws LoginException;
    }
    classe LoginServiceSpringImpl :
    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
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class LoginServiceSpringImpl implements ILoginService {
        private ILoginDAO loginDAO;
     
        public LoginServiceSpringImpl() {
            super();
        }
        public Utilisateur exists(String login, String password) throws LoginException {
            Utilisateur theUtilisateur = null;
            try {
                theUtilisateur = getLoginDAO().exists(login,password);
            } catch (RuntimeException e) { 
                throw new LoginException("Impossible de rechercher le login : " + login + " , " + password + "    ...    " + e.toString());
            }
            return theUtilisateur;
        }
     
        public ILoginDAO getLoginDAO() {
            return loginDAO;
        }
     
        public void setLoginDAO(ILoginDAO loginDAO) {
            this.loginDAO = loginDAO;
        }
    }
    Interface
    ILoginDAO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface ILoginDAO {
        public abstract Utilisateur exists(String login, String password);
    }
    classe LoginHibernateDAO :
    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
    18
    19
    20
    21
     
    public class LoginHibernateDAO extends HibernateDaoSupport implements ILoginDAO {
     
        public LoginHibernateDAO() {
            super();
        }
     
        public Utilisateur exists(String login, String password) {
            Session session = HibernateUtil.currentSession();
            List utilisateurs = null;
            utilisateurs = session.createQuery("from Utilisateur where use_login = '" + login + "' and use_password = '" + password + "'").list();
     
            //utilisateurs = getHibernateTemplate().find("from Utilisateur where use_login = '" + login + "' and use_password = '" + password + "'");
     
            Utilisateur theUtilisateur = null;
            for (int i=0; i<utilisateurs.size(); i++) {
                theUtilisateur = (Utilisateur) utilisateurs.get(i);
            }
            return theUtilisateur;
        }
    }
    Voila, merci déja à tous ceux qui m'indiqueront quoi déclarer comme bean en vue de cette architecture et merci encore + à ceux qui auront regardé le code et qui sauront me dire qu'est-ce qui est bien et qu'est-ce qui est abérant.

    @+
    -> L’amour est à la portée de tous, mais l’amitié est l’épreuve du cœur
    -> La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins
    -> Trois sortes de gens disent la vérité : les sots, les enfants et les ivrognes




  2. #2
    Membre habitué Avatar de nikalkal
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    231
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 231
    Points : 166
    Points
    166
    Par défaut
    En fait en me plogeant a fond dans la doc de référence de spring, j'ai compris.
    Je mets mon code dans ce post si ca peux aider d'autres personnes qui feraient des recherches sur ce sujet.

    J'ai changé le nom de mes classes j'ai donc :
    - Une jsp qui affiche un formulaire login/password. (struts)
    - Une classe action nomée FormulaireLoginAction
    - l'action fais appel à une interface ISpringUserService.
    - Une classe SpringUserServicesImpl implémente cette interface.
    - Celle-çi contient à son tour une interface IDAOUserService qui est implémentée par une classe HibernateUserServiceImpl (classe ou la recherche en bdd s'effectue).

    Maintenant voiçi le code de ces fichiers :
    FormulaireLoginAction :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class FormulaireLoginAction extends Action {
     
        private ISpringUserService userService;
     
        public FormulaireLoginAction() {
            super();
        }
     
        public void setServlet(ActionServlet actionServlet) {
            super.setServlet(actionServlet);
            ServletContext servletContext = actionServlet.getServletContext();
            WebApplicationContext wac =
                WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
            this.userService = (ISpringUserService) wac.getBean("myUserService");
        }
     
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     
            FormulaireLoginBean formulaire = (FormulaireLoginBean) form;
            request.setAttribute("nom",formulaire.getNom());
            request.setAttribute("motDePasse",formulaire.getMotDePasse());
     
            Utilisateur theUtilisateur = getUserService().exists(formulaire.getNom(),formulaire.getMotDePasse());
            if(theUtilisateur!=null) {
                HttpSession session = request.getSession(true);
                session.setAttribute("droits", theUtilisateur.getDroits());
                session.setAttribute("login", formulaire.getNom());
                session.setAttribute("password", formulaire.getMotDePasse());            
            }
     
            return mapping.findForward("index");
        }
     
        protected ISpringUserService getUserService() {
            return userService;
        }
     
    }
    ISpringUserService :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface ISpringUserService {
        public abstract Utilisateur exists(String login, String password) throws LoginException;
    }
    SpringUserServicesImpl :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    public class SpringUserServicesImpl implements ISpringUserService {
        public IDAOUserService serviceDAO;
     
        public SpringUserServicesImpl() {
            super();
        }
     
        public Utilisateur exists(String login, String password) throws LoginException {
            Utilisateur theUtilisateur = null;
            try {
                theUtilisateur = getServiceDAO().exists(login,password);
            } catch (RuntimeException e) { 
                throw new LoginException("Impossible de rechercher le login : " + login + " , " + password + "    ...    " + e.toString());
            }
            return theUtilisateur;
        }
     
        public IDAOUserService getServiceDAO() {
            return serviceDAO;
        }
     
        public void setServiceDAO(IDAOUserService serviceDAO) {
            this.serviceDAO = serviceDAO;
        }
    }
    IDAOUserService :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface IDAOUserService {
        public abstract Utilisateur exists(String login, String password);
    }
    HibernateUserServiceImpl :
    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
    18
    19
     
    public class HibernateUserServiceImpl implements IDAOUserService {
     
        private SessionFactory sessionFactory;
     
        public HibernateUserServiceImpl() {
            super();
        }
     
        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }
     
        public Utilisateur exists(String login, String password) {
            Session session = sessionFactory.getCurrentSession();
            Utilisateur theUtilisateur = (Utilisateur) session.createQuery("from Utilisateur where use_login = '" + login + "' and use_password = '" + password + "'").list().get(0);
            return theUtilisateur;
        }
    }
    Et le fichier de conf spring --> applicationContext.xml :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <beans>    
    <!--                            HIBERNATE                               -->
        <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="mappingResources">
                <list>
                    <value>fr/gestentrep2/utilisateurs/pojos/Utilisateur.hbm.xml</value>
                    <value>fr/gestentrep2/voitures/pojos/Voiture.hbm.xml</value>
                </list>
            </property>        
            <property name="hibernateProperties">
                <props>
            <prop key="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</prop>
            <prop key="hibernate.connection.url">jdbc:mysql://localhost/gestentrep2</prop>
            <prop key="hibernate.connection.username">root</prop>
            <prop key="hibernate.connection.password"></prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <!--  <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>-->
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
                    <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
                </props>
            </property>        
        </bean>
     
        <bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory"><ref local="mySessionFactory"/></property>
        </bean>
    <!--                            /HIBERNATE                               -->
     
     
    <!--                        MODE TRANSACTIONNEL                          -->
        <bean id="myUserTransactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
            <property name="transactionManager" ref="myTransactionManager"/>
            <property name="transactionAttributeSource">
                <value>fr.gestentrep2.utilisateurs.services.ISpringUserService.*=PROPAGATION_REQUIRED</value>
            </property>
        </bean>
     
        <bean id="mySpringUserServicesImpl" class="fr.gestentrep2.utilisateurs.services.spring.SpringUserServicesImpl">
            <property name="serviceDAO" ref="myHibernateUserService"/>
        </bean>
     
        <bean id="myUserService" class="org.springframework.aop.framework.ProxyFactoryBean">
            <property name="proxyInterfaces">
                <value>fr.gestentrep2.utilisateurs.services.ISpringUserService</value>
            </property>
            <property name="interceptorNames">
                <list>
                    <value>myUserTransactionInterceptor</value>
                    <value>mySpringUserServicesImpl</value>
                </list>
            </property>
        </bean>
    <!--                        /MODE TRANSACTIONNEL                          -->
     
     
        <bean id="myHibernateUserService" class="fr.gestentrep2.utilisateurs.services.hibernate.HibernateUserServiceImpl">
            <property name="sessionFactory"><ref local="mySessionFactory"/></property>        
        </bean>
    </beans>
    J'ai déclaré transactionelle toutes les méthodes des services utilisés dans ISpringVoitureService.

    Voila si ça peut aider quelqu'un tant mieux.
    @++
    -> L’amour est à la portée de tous, mais l’amitié est l’épreuve du cœur
    -> La nature nous a donné deux oreilles et seulement une langue afin de pouvoir écouter d'avantage et parler moins
    -> Trois sortes de gens disent la vérité : les sots, les enfants et les ivrognes




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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/04/2010, 13h08
  2. [STRUTS/HIBERNATE] Problème d'exécution de requête
    Par mc_chicken dans le forum Hibernate
    Réponses: 5
    Dernier message: 21/10/2005, 10h27
  3. [Plugin][Jar] Chargement fichier de conf d'un jar
    Par vberetti dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 29/06/2005, 15h03
  4. Un fichier xorg.conf ?
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 28/10/2004, 19h19
  5. Réponses: 4
    Dernier message: 19/03/2004, 12h48

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