IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Développement des applications Web avec Spring, Hibernate et Richfaces


précédentsommairesuivant

6. Intégration de Spring

6-A. Ajout de la bibliothèque Spring

La première étape pour intégrer Spring dans notre application web consiste à ajouter la bibliothèque de Spring dans notre projet.

Image non disponible
Image non disponible

On clique sur « add library ».

Image non disponible

On clique sur « Import ».

On choisit le « Spring Framework 2.5 »puis on clique sur « import Library ».

Image non disponible

On valide par « add library ».

6-B. Création du fichier de configuration

Maintenant on passe à la création du fichier de configuration de Spring « applicationContext » ce fichier contient tous les beans qui seront gérés par Spring.

Image non disponible
Image non disponible

Le fichier doit être créé dans le dossier « WEB-INF ».

Image non disponible
Image non disponible

On va commencer par définir les paramètres de connexion à notre base de données. En effet le fichier de configuration de Spring contient les mêmes informations qui se trouvent dans le fichier « hibernate.cfg.xml » ce qui rend ce fichier inutile et on pourra ainsi le supprimer.

Image non disponible

Ensuite on spécifie les paramètres de générateur de session « session factory ». Cette configuration consiste à spécifier les paramètres d'Hibernate, les fichiers de mapping utilisés et la classe responsable de la gestion de la session.

Image non disponible

On va déclarer aussi le Bean de gestion des erreurs liées aux exceptions SQL.

Image non disponible

On déclare le Bean HibernateTemplate. La classe HibernateTemplate fournit des méthodes pour assurer la persistance des objets dans la base de données en utilisant Hibernate.

Image non disponible

On déclare le gestionnaire de transaction pour hibernate.

Image non disponible

Après avoir effectué les configurations de base dans le fichier « applicationContext » on déclare dans le descripteur de déploiement « web.xml » les configurations liées à l'utilisation de Spring.

Image non disponible

On ajoute aussi dans le fichier « faces-config.xml » la déclaration de l'utilisation de Spring. Cette déclaration permet à JSF de voir les beans déclarés dans le fichier de configuration de Spring.

Image non disponible

6-C. Création de la couche Service et la couche DAO

On passe maintenant à la création de la couche Service et la couche DAO.

On crée un nouveau package qu'on appellera « Interfaces » et on crée dedans deux interfaces « interfaceDAO » et « interfaceService ». Les interfaces DAO et Service contiennent la définition des méthodes qu'on va utiliser. Dans notre exemple on va utiliser seulement quatre méthodes :

  • Save : pour enregistrer les objets dans la base ;
  • Modify : pour modifier un enregistrement existant ;
  • Delete : pour supprimer un enregistrement ;
  • Findall : pour récupérer la liste des enregistrements dans la base.
InterfaceDAO
Sélectionnez
package Implementation.dao;
import Entity.Service;
import Interfaces.InterfaceDAO;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class ServiceDaoImpl extends HibernateDaoSupport implements InterfaceDAO {
  @Override
  public void save(Object inst) {
    Service serv = (Service) inst;
    this.getHibernateTemplate().save(serv);  }
  @Override
  public void modify(Object inst) {
    Service serv = (Service) inst;
    this.getHibernateTemplate().update(serv);  }
  @Override
  public void delete(Object inst) {
    Service serv = (Service) inst;
    this.getHibernateTemplate().delete(serv);  }
  public List findAll() {
    return (List) this.getHibernateTemplate().loadAll(Service.class);  }
}
InterfaceService
Sélectionnez
package Interfaces;
import java.util.List;
/**
* @author Jihed
*/
  public interface InterfaceService {
  public void save(Object inst);
  public void modify(Object inst);
  public void delete(Object inst);
public List findAll();
}

On crée deux autres packages « Implementation.service » et « implementation.dao ».

Dans le package « implementation.dao » on va implémenter l'interface DAO pour chaque classe de notre application.

ServiceDaoImpl
Sélectionnez
package Implementation.dao;
import Entity.Service;
import Interfaces.InterfaceDAO;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class ServiceDaoImpl extends HibernateDaoSupport implements InterfaceDAO {
 @Override
 public void save(Object inst) {
   Service serv = (Service) inst;
   this.getHibernateTemplate().save(serv);  }
 @Override
 public void modify(Object inst) {
   Service serv = (Service) inst;
   this.getHibernateTemplate().update(serv);  }
 @Override
 public void delete(Object inst) {
   Service serv = (Service) inst;
   this.getHibernateTemplate().delete(serv);  }
 public List findAll() {
   return (List) this.getHibernateTemplate().loadAll(Service.class);  }
}
PersonnelDaoImpl
Sélectionnez
package Implementation.dao;
import Entity.Personnel;
import Interfaces.InterfaceDAO;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class PersonnelDaoImpl extends HibernateDaoSupport implements InterfaceDAO {
 @Override
 public void save(Object inst) {
   Personnel pers = (Personnel) inst;
   this.getHibernateTemplate().save(pers);  }

 @Override
 public void modify(Object inst) {
   Personnel pers = (Personnel) inst;
   this.getHibernateTemplate().update(pers);  }
 @Override
 public void delete(Object inst) {
   Personnel pers = (Personnel) inst;
   this.getHibernateTemplate().delete(pers);  }
 public List findAll() {
   return (List) this.getHibernateTemplate().loadAll(Personnel.class);  }
}
EquipementDaoImpl
Sélectionnez
package Implementation.dao;
import Entity.Equipement;
import Interfaces.InterfaceDAO;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class EquipementDaoImpl extends HibernateDaoSupport implements InterfaceDAO {
 @Override
 public void save(Object inst) {
   Equipement equip = (Equipement) inst;
   this.getHibernateTemplate().save(equip);
 }
 @Override
 public void modify(Object inst) {
   Equipement equip = (Equipement) inst;
   this.getHibernateTemplate().update(equip);
 }
 @Override
 public void delete(Object inst) {
   Equipement equip = (Equipement) inst;
   this.getHibernateTemplate().delete(equip);
 }
 public List findAll() {
   return (List) this.getHibernateTemplate().loadAll(Equipement.class);
 }
}
InterventionsDaoImpl
Sélectionnez
package Implementation.dao;
import Entity.Interventions;
import Interfaces.InterfaceDAO;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class InterventionsDaoImpl extends HibernateDaoSupport implements InterfaceDAO {
 @Override
 public void save(Object inst) {
   Interventions interv = (Interventions) inst;
   this.getHibernateTemplate().save(interv);  }
 @Override
 public void modify(Object inst) {
   Interventions interv = (Interventions) inst;
   this.getHibernateTemplate().update(interv);  }
 @Override
 public void delete(Object inst) {
   Interventions interv = (Interventions) inst;
   this.getHibernateTemplate().delete(interv);  }
 public List findAll() {
   return (List) this.getHibernateTemplate().loadAll(Interventions.class);  }
}


Après avoir créé la couche DAO on va passer à la création de la couche service. Celle-ci fait appel à la couche DAO.

ServiceServiceImpl
Sélectionnez
package Implementation.service;
import Entity.Service;
import Interfaces.InterfaceDAO;
import Interfaces.InterfaceService;
import java.util.List;
public class ServiceServiceImpl implements InterfaceService {
   private InterfaceDAO serviceDao;
   public void save(Object instance) {
       Service serv = (Service) instance;
       serviceDao.save(serv);    }
   public void modify(Object instance) {
       Service serv = (Service) instance;
       serviceDao.modify(serv);    }
   public void delete(Object instance) {
       Service serv = (Service) instance;
       serviceDao.delete(serv);    }
   public List findAll() {
       return serviceDao.findAll();    }
   public InterfaceDAO getServiceDao() {
       return serviceDao;    }
   public void setServiceDao(InterfaceDAO serviceDao) {
       this.serviceDao = serviceDao;    }
}
PersonnelServiceImpl
Sélectionnez
package Implementation.service;
import Entity.Personnel;
import Interfaces.InterfaceDAO;
import Interfaces.InterfaceService;
import java.util.List;
public class PersonnelServiceImpl implements InterfaceService {
   private InterfaceDAO personnelDao;
   public void save(Object instance) {
       Personnel pers = (Personnel) instance;
       personnelDao.save(pers);    }
   public void modify(Object instance) {
       Personnel pers = (Personnel) instance;
       personnelDao.modify(pers);    }
   public void delete(Object instance) {
       Personnel pers = (Personnel) instance;
       personnelDao.delete(pers);    }

   public List findAll() {
       return personnelDao.findAll();    }
   public InterfaceDAO getPersonnelDao() {
       return personnelDao;    }
   public void setPersonnelDao(InterfaceDAO personnelDao) {
       this.personnelDao = personnelDao;    }
}
EquipementServiceImpl
Sélectionnez
package Implementation.service;
import Entity.Equipement;
import Interfaces.InterfaceDAO;
import Interfaces.InterfaceService;
import java.util.List;
public class EquipementServiceImpl implements InterfaceService {
   private InterfaceDAO equipDao;
   public void save(Object instance) {
       Equipement equip = (Equipement) instance;
       equipDao.save(equip);    }
   public void modify(Object instance) {
       Equipement equip = (Equipement) instance;
       equipDao.modify(equip);    }

   public void delete(Object instance) {
       Equipement equip = (Equipement) instance;
       equipDao.delete(equip);    }
   public List findAll() {
       return equipDao.findAll();    }
   public InterfaceDAO getEquipDao() {
       return equipDao;    }
   public void setEquipDao(InterfaceDAO equipDao) {
       this.equipDao = equipDao;    }
}
InterventionsServiceImpl
Sélectionnez
package Implementation.service;
import Entity.Interventions;
import Interfaces.InterfaceDAO;
import Interfaces.InterfaceService;
import java.util.List;
public class InterventionsServiceImpl implements InterfaceService {
   private InterfaceDAO intervDao;
   public void save(Object instance) {
       Interventions interv = (Interventions) instance;
       intervDao.save(interv);    }
   public void modify(Object instance) {
       Interventions interv = (Interventions) instance;
       intervDao.modify(interv);
   }
   public void delete(Object instance) {
       Interventions interv = (Interventions) instance;
       intervDao.delete(interv);    }
   public List findAll() {
       return intervDao.findAll();   }
   public InterfaceDAO getIntervDao() {
       return intervDao;    }
   public void setIntervDao(InterfaceDAO intervDao) {
       this.intervDao = intervDao;    }
}


Après avoir créé ces classes on va les déclarer dans le fichier de configuration de Spring.

Image non disponible

Les beans DAO font référence au Bean hibernatetemplate tandis que les Beans services font référence aux beans DAO associés. La déclaration des beans au niveau du fichier de configuration de Spring est terminée.

applicationContext.xml
Sélectionnez
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx"
      xmlns:p="http://www.springframework.org/schema/p"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
   <!--Data Source Definition-->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName">
           <value>com.mysql.jdbc.Driver</value>
       </property>
       <property name="url">
           <value>jdbc:mysql://localhost:3306/gestion_parc</value>
       </property>
       <property name="username">
           <value>root</value>
       </property>
       <property name="password">
           <value>diag2000</value>
       </property>
   </bean>
     <!--Hibernate Session Factory Definition-->
   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="mappingResources">
           <list>
               <value>Mapping/Equipement.hbm.xml</value>
               <value>Mapping/Interventions.hbm.xml</value>
               <value>Mapping/Personnel.hbm.xml</value>
               <value>Mapping/Service.hbm.xml</value>
           </list>
       </property>
       <property name="hibernateProperties">
           <props>
               <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
               <prop key="hibernate.show_sql">true</prop>
               <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
               <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
           </props>
       </property>
       <property name="dataSource">
           <ref bean="dataSource"/>
       </property>
   </bean>
       <!--Spring Data Access Exception Translator Defintion-->
   <bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
       <property name="dataSource">
           <ref bean="dataSource"/>
       </property>
   </bean>
   <!--Hibernate Template Defintion-->
   <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
       <property name="sessionFactory">
           <ref bean="sessionFactory"/>
       </property>
       <property name="jdbcExceptionTranslator">
           <ref bean="jdbcExceptionTranslator"/>
       </property>
   </bean>

   <!--Hibernate Transaction Manager Definition-->
   <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property name="sessionFactory">
           <ref local="sessionFactory"/>
       </property>
   </bean>
   <!--========================= Start of DAO BEANS DEFINITIONS =========================-->
   <bean id="serviceDao" class="Implementation.dao.ServiceDaoImpl">
       <property name="hibernateTemplate" ref="hibernateTemplate"/>
   </bean>
   <bean id="persDao" class="Implementation.dao.PersonnelDaoImpl">
       <property name="hibernateTemplate" ref="hibernateTemplate"/>
   </bean>
   <bean id="equipDao" class="Implementation.dao.EquipementDaoImpl">
       <property name="hibernateTemplate" ref="hibernateTemplate"/>
   </bean>
   <bean id="intervDao" class="Implementation.dao.InterventionsDaoImpl">
       <property name="hibernateTemplate" ref="hibernateTemplate"/>
   </bean>
   <!--========================= Start of SERVICE BEANS DEFINITIONS =========================-->
   <bean id="servService" class="Implementation.service.ServiceServiceImpl">
       <property name="serviceDao" ref="serviceDao"/>
   </bean>
   <bean id="persService" class="Implementation.service.PersonnelServiceImpl">
       <property name="personnelDao" ref="persDao"/>
   </bean>
   <bean id="equipService" class="Implementation.service.EquipementServiceImpl">
       <property name="equipDao" ref="equipDao"/>
   </bean>
   <bean id="intervService" class="Implementation.service.InterventionsServiceImpl">
       <property name="intervDao" ref="intervDao"/>
   </bean>
</beans>

Voici un schéma qui explique la relation entre les différents beans déclarés dans le fichier « applicationContext ».

Image non disponible

précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2011 DGHAIES Jihed. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.