SlideShare une entreprise Scribd logo
1  sur  23
Qualoo: le générateur d'applications J2EE




                  ST Informatique SERVICES
QUALOO




      Présentation
      Architecture de l'application
      Code source
      Les avantages
      L'application obtenue
      La customisation: le métier, la présentation
      Le périmètre actuel et futur
      Contacts




24 janvier 2008               ST Informatique SERVICES   2
Présentation

 Besoins récurrents d'une application web :


      Couche de persistance
      Couche de présentation avec les fonctionnalités standard
      Choix d'une architecture pertinente (conception et produits)
      Code clair permettant une maintenance aisée




24 janvier 2008                                                       3
Présentation

 Solution proposée : la génération automatique

      Un générateur en Java qui crée automatiquement une
       application web J2EE à partie d'une base de données
       relationnelle.
      Un outil qui permet de faire des projets J2EE beaucoup
       plus rapidement
      Une solution basée sur les expériences d'une équipe
       d'architectes très expérimentés ( architecture et code)
      Une solution validée par des projets clients.




24 janvier 2008                                                  4
Présentation

 Résultat de la génération : Une application

      Java/J2EE
      Compatible avec les principales bases de données (Oracle,
       Mysql, ...)
      Disposant d'une architecture validée, basée sur des
       standards reconnus
      Utilisant les frameworks les plus courants (Hibernate,
       Spring, Struts ...)
      Compatible avec Java 1.4 ou 1.5
      Basé sur des outils Open-source
      Directement déployable sur un serveur d'application ou
       conteneur web.
      Facile à customiser et à faire évoluer.

24 janvier 2008             ST Informatique SERVICES               5
Architecture de l'application

  Architecture à 3 couches :
    Couche présentation
    Couche métier (service)
    Couche d'accès au données




24 janvier 2008        ST Informatique SERVICES   6
Architecture de l'application

Avantages d'une architecture à 3 couches :


  Couches indépendantes les unes des autres
  Facilité de maintenance
  La gestion des données et la logique métier peuvent être indépendantes du
   type d'interface
  Le travail en équipe est optimisé
  Factorisation de code et utilisation de framework ou composants
   génériques (gain de temps et performances)




24 janvier 2008                   ST Informatique SERVICES                     7
Architecture de l'application
 la couche présentation :
                    Affiche les données
                    Envoie les demandes de l'utilisateur à la couche métier pour
                     qu'elle les effectue
                    Reçoit les résultats renvoyés par la couche métier et les
                     affiches


                   Basée sur l'utilisation de framework MVC notamment Struts


                   L'utilisation de frameworks MVC permet d'organiser la couche
                   présentation pour qu’elle soit plus robuste, plus fiable et plus
                   facile à faire évoluer




 24 janvier 2008                 ST Informatique SERVICES                             8
Architecture de l'application
 la couche métier (service) :




                       Reçoit et analyse les demandes de l'utilisateur
                       Retrouve et modifie les données via la couche données
                       Renvoie les résultats à la couche présentation
                       Basée sur des Javabeans




24 janvier 2008              ST Informatique SERVICES                           9
Architecture de l'application
 Utilisation d'hibernate pour la couche d'accès aux données:


                          Assure les fonctions CRUD
                          Assure la sécurité et l'intégrité des données




        Support d'hibernate 2 et 3
        Portabilité vers différentes bases de données
        Possibilité de customiser       hibernate      pour
         améliorer les performances




 24 janvier 2008                      ST Informatique SERVICES             10
Architecture de l'application
 Utilisation de Spring pour les liens entre couches:




                    Permet de laisser les couches indépendantes les unes des autres
                        configuration au niveau du conteneur
                        Idéal pour de la conception à base d'interfaces (DAO)




 24 janvier 2008                              ST Informatique SERVICES                 11
Code source
                   Organisation de l'application sous forme de package:



                         Couche d'accès aux données
                         Couche service
                          Couche présentation


                          Répertoire de tests


                          Répertoire racine de l'application




24 janvier 2008                  ST Informatique SERVICES                  12
Code source




 Facilement maintenable
 Peut être importé directement dans Eclipse
 Le projet contient des Junits (pour les couches service et
  d'accès aux données) ainsi que des HttpUnits (pour la couche
  présentation)
 Internationalisation de l'application (anglais et français)




24 janvier 2008            ST Informatique SERVICES          13
Code source

         Code commenté et formaté
                  Exemple code source de struts pour la couche présentation
                  /**
                         * Execute the <code>ListAAction</code>.
                         * @param mapping The <code>ActionMapping</code> used to select this instance.
                         * @param form The optional <code>ActionForm</code> bean for this request (if any).
                         * @param request The HTTP request we are processing
                         * @param response The HTTP response we are processing
                         * @throws Exception if an error occurs.
                         */
                        public ActionForward execute(ActionMapping mapping, ActionForm form,
                            HttpServletRequest request, HttpServletResponse response)
                            throws java.lang.Exception {
                            try {
                                // Get the AService
                                AService srvc = ServiceFactory.getInstance().getAService();

                                // Get all A
                                List<A> list = srvc.getAll();
                                request.setAttribute("ALIST", list);
                            } catch (ServiceException e) {
                                if (e.getMessageKey() != null) {
                                    ActionErrors messages = new ActionErrors();
                                    messages.add(ActionMessages.GLOBAL_MESSAGE,
                                        new ActionMessage(e.getMessageKey(), e.getValues()));
                                    saveErrors(request, messages);
                                } else {
                                    throw e;
                                }
                            }

                            return mapping.findForward("success");
                        }




24 janvier 2008                                     ST Informatique SERVICES                                  14
Code source

                        Exemple code source de la couche présentation


/**                                                                             /**
       * Get the <code>A</code> specified by its primary key.                    * Save the specified <code>A</code>.
       * @param pk The primary key of the <code>A</code> to get.                 * @param a The <code>A</code> to save.
       * @return The <code>A</code> found, null otherwise.                       * @return The newly created <code>A</code>.
       * @throws ServiceException if an error occurs.                            * @throws ServiceException if an error occurs.
       */                                                                        */
      public A findByPK(Serializable pk) throws ServiceException                public A create(A a) throws ServiceException {
{                                                                                   try {
        try {                                                                           // Check arguments
            // Check arguments                                                          if (a == null) {
            if (pk == null) {                                                               throw new IllegalArgumentException("a
                throw new IllegalArgumentException("pk                      parameter is null");
parameter is null");                                                                    }
            }
                                                                                          // Create
                  // Find by primary key                                                  A result = this.aDao.create(a);
                  A a = this.aDao.findByPK(pk);
                                                                                        return result;
                return a;                                                           } catch (Throwable t) {
            } catch (Throwable t) {                                                     if (trace.isErrorEnabled()) {
                if (trace.isErrorEnabled()) {                                               trace.error("Could not create A", t);
                    trace.error("Could not find A by PK", t);                           }
                }
                                                                                          throw new ServiceException(t);
                  throw new ServiceException(t);                                    }
            }                                                                   }
      }




      24 janvier 2008                                          ST Informatique SERVICES                                             15
Code source

     Exemple code source de la couche d'accès aux données

                           /**
                            * ADaoHb8 Hibernate3 implementation.
                            * @author STI Generator
                            * @spring.bean id="aDao"
                            * @spring.property name="sessionFactory" ref="sessionFactory"
                            */
                           public class ADaoHb8 extends HibernateDaoSupport implements ADao {
                               /**
                                * Default constructor, constructs a <code>ADaoHb8</code>.
                                */
                               public ADaoHb8() {
                                   super();
                               }

                               /**
                                * Get all the <code>A</code> from the database.
                                * @return All the <code>A</code> from the database.
                                * @throws PersistenceException if an error occurs.
                                */
                               public List<A> getAll() throws PersistenceException {
                                   Session session = SessionFactoryUtils.getSession(getSessionFactory(),
                                           false);

                                   try {
                                       Query query = session.getNamedQuery("a.all");
                                       List<A> objList = query.list();

                                       return objList;
                                   } catch (Throwable t) {
                                       throw new PersistenceException(t);
                                   }
                               }
                               ...
                               .....




24 janvier 2008                                    ST Informatique SERVICES                                16
Les avantages

 Amélioration de la qualité
      Conception et framework créés par des architectes J2EE
      Architecture et intégration des produits validées
      Code basé sur les bonnes pratiques
      Permet aux développeurs de focaliser leur énergie sur
       l'implémentation du code spécifique métier
      Applications faciles à tester
 Réduction des risques liés aux choix des technologies
      Solutions choisies par des experts
      Technologies matures et fortement utilisées
      Technologies connues des développeurs

24 janvier 2008            ST Informatique SERVICES             17
Les avantages

 Réduction des coûts
      Moins de code à implémenter
      Pas besoin d'experts pour les évolutions
      Facilité de maintenance (architecture, code)
      Optimisation de la maintenance (architecture commune)
 Réduction du temps de développement
      Pas besoin de faire de la conception sur le design applicatif
      Pas besoin d'implémenter le framework de l'application
      Pas besoin d'écrire les fonctionnalités basiques
      Le code généré sert d'exemple pour les évolutions


24 janvier 2008              ST Informatique SERVICES                  18
L'application obtenue

 Page d'affichage avec la liste de toutes les tables
 Sélection d'une table : affichage colonnes et lignes
      Consulter, créer, modifier et supprimer pour chaque ligne
      Création: ouverture d'un formulaire de saisie
      Modification : affichage du formulaire pré-rempli
      Tri de 1er niveau sur une colonne
 Écran d'affichage des relations entre tables
 Validation de la saisie
      Contrôle du type :date, nombre
      Validation de la saisie obligatoire (not-null), si nécessaire


24 janvier 2008               ST Informatique SERVICES                 19
La customisation : le metier, la présentation

 La couche métier
    Possibilité de détacher la couche métier de la présentation
     pour la lier à une autre couche (par exemple un client lourd)
    Les liens entre la couche présentation et la couche métier et
     ceux entre les couches métiers et de persistance sont
     réalisés. Il suffit d'ajouter le code spécifique au métier.
 La couche présentation
    L'architecture de la navigation étant faite, pour customiser
     la présentation il suffit de changer la configuration et le
     code Struts
    Le style des pages se fait par l'intermédiaire de feuilles de
     style CSS, il suffit donc de les changer pour changer de
     style
 24 janvier 2008           ST Informatique SERVICES              20
Le périmètre actuel et futur

 Le périmètre actuel
    Choix des frameworks
             Struts, JSTL et CSS pour la couche présentation
             Spring pour les liens entre couches
             Hibernate 2 et 3 pour la couche de persistance
             Support de JDK 1,4+
    Possibilité de générer des tests JUnits et HttpUnit
    Personnalisation du style CSS.
    Support d'Oracle, MySql, PostgreSql, HsqlDB, SqlServer
    Opération de création, de modification, de suppression, de
     visualisation et de tri sur les Objets.

 24 janvier 2008                    ST Informatique SERVICES    21
Le périmètre actuel et futur

 Le périmètre futur

    Support de Spring MVC et Struts2 pour la couche
     présentation
    Mise en place de filtres sur les colonnes
    Introduction de composants AJAX.
    Génération d'application client lourd (type swing)




 24 janvier 2008            ST Informatique SERVICES      22
Contacts


                   Pour toute information complémentaire:


                               ST Informatique
                  65, allée de Bellefontaine – 31100 Toulouse
                   Tel: 05 61 43 76 24 Fax: 05 61 41 72 48
                     dominique.turpin@stinfoservices.net


                            www.stinfoservices.net



24 janvier 2008                 ST Informatique SERVICES        23

Contenu connexe

Tendances

Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence APIThibault Cuvillier
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETLLilia Sfaxi
 
Objet Direct Formation JPA Hibernate
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernateformationobjetdirect
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application javaAntoine Rey
 

Tendances (6)

Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
Intégration des données avec Talend ETL
Intégration des données avec Talend ETLIntégration des données avec Talend ETL
Intégration des données avec Talend ETL
 
Objet Direct Formation JPA Hibernate
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernate
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 

En vedette

floor polishing 3 twister upgrade methods
floor polishing 3 twister upgrade methodsfloor polishing 3 twister upgrade methods
floor polishing 3 twister upgrade methodsBalathandayutham V
 
Listing Presentation Booklet 2015
Listing Presentation Booklet 2015Listing Presentation Booklet 2015
Listing Presentation Booklet 2015Molly Heyen
 
Science olympiad certificate of appreciation
Science olympiad certificate of appreciationScience olympiad certificate of appreciation
Science olympiad certificate of appreciationAlfonso Figueroa
 
Trajetória dos Estudantes Universitários Guineenses para Ceará
Trajetória dos Estudantes Universitários Guineenses para Ceará Trajetória dos Estudantes Universitários Guineenses para Ceará
Trajetória dos Estudantes Universitários Guineenses para Ceará Ricardino Teixeira
 
Jee022 formation-jee-struts-2-hibernate-3-spring
Jee022 formation-jee-struts-2-hibernate-3-springJee022 formation-jee-struts-2-hibernate-3-spring
Jee022 formation-jee-struts-2-hibernate-3-springCERTyou Formation
 
Certificate ShangriLa Circle of Success
Certificate ShangriLa Circle of SuccessCertificate ShangriLa Circle of Success
Certificate ShangriLa Circle of SuccessPhensiri Charoensuk
 
Teoria de ofimatica jlmc
Teoria de ofimatica jlmcTeoria de ofimatica jlmc
Teoria de ofimatica jlmcJOTAMAN81
 

En vedette (11)

Expo 14
Expo 14Expo 14
Expo 14
 
floor polishing 3 twister upgrade methods
floor polishing 3 twister upgrade methodsfloor polishing 3 twister upgrade methods
floor polishing 3 twister upgrade methods
 
Kamlesh Chandra Edu Leader CV
Kamlesh Chandra Edu Leader CVKamlesh Chandra Edu Leader CV
Kamlesh Chandra Edu Leader CV
 
Listing Presentation Booklet 2015
Listing Presentation Booklet 2015Listing Presentation Booklet 2015
Listing Presentation Booklet 2015
 
Science olympiad certificate of appreciation
Science olympiad certificate of appreciationScience olympiad certificate of appreciation
Science olympiad certificate of appreciation
 
Trajetória dos Estudantes Universitários Guineenses para Ceará
Trajetória dos Estudantes Universitários Guineenses para Ceará Trajetória dos Estudantes Universitários Guineenses para Ceará
Trajetória dos Estudantes Universitários Guineenses para Ceará
 
Jee022 formation-jee-struts-2-hibernate-3-spring
Jee022 formation-jee-struts-2-hibernate-3-springJee022 formation-jee-struts-2-hibernate-3-spring
Jee022 formation-jee-struts-2-hibernate-3-spring
 
Certificate ShangriLa Circle of Success
Certificate ShangriLa Circle of SuccessCertificate ShangriLa Circle of Success
Certificate ShangriLa Circle of Success
 
CST_Full_Presentation
CST_Full_PresentationCST_Full_Presentation
CST_Full_Presentation
 
16 Awesome Ideas to Revamp Your Listing Presentation
16 Awesome Ideas to Revamp Your Listing Presentation16 Awesome Ideas to Revamp Your Listing Presentation
16 Awesome Ideas to Revamp Your Listing Presentation
 
Teoria de ofimatica jlmc
Teoria de ofimatica jlmcTeoria de ofimatica jlmc
Teoria de ofimatica jlmc
 

Similaire à PréSentation Qualoo Le Generateur De Code Java J2 Ee

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
Activity
ActivityActivity
Activitydido
 
Marzouk une introduction à jdbc
Marzouk une introduction à jdbcMarzouk une introduction à jdbc
Marzouk une introduction à jdbcabderrahim marzouk
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
 
Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0guestee837a
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxsalmachtioui1
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introductionMichel Bruchet
 
Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreArnaud Auroux
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJsimeon
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 

Similaire à PréSentation Qualoo Le Generateur De Code Java J2 Ee (20)

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Activity
ActivityActivity
Activity
 
Marzouk une introduction à jdbc
Marzouk une introduction à jdbcMarzouk une introduction à jdbc
Marzouk une introduction à jdbc
 
Jdbc
JdbcJdbc
Jdbc
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
 
Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0Xdt Tests Driven Architecture Process V1.0
Xdt Tests Driven Architecture Process V1.0
 
1145709.ppt
1145709.ppt1145709.ppt
1145709.ppt
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 
Mysql
MysqlMysql
Mysql
 
Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet core
 
Formation gwt
Formation gwtFormation gwt
Formation gwt
 
Aspect avec AspectJ
Aspect avec AspectJAspect avec AspectJ
Aspect avec AspectJ
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 

PréSentation Qualoo Le Generateur De Code Java J2 Ee

  • 1. Qualoo: le générateur d'applications J2EE ST Informatique SERVICES
  • 2. QUALOO  Présentation  Architecture de l'application  Code source  Les avantages  L'application obtenue  La customisation: le métier, la présentation  Le périmètre actuel et futur  Contacts 24 janvier 2008 ST Informatique SERVICES 2
  • 3. Présentation  Besoins récurrents d'une application web : Couche de persistance Couche de présentation avec les fonctionnalités standard Choix d'une architecture pertinente (conception et produits) Code clair permettant une maintenance aisée 24 janvier 2008 3
  • 4. Présentation  Solution proposée : la génération automatique Un générateur en Java qui crée automatiquement une application web J2EE à partie d'une base de données relationnelle. Un outil qui permet de faire des projets J2EE beaucoup plus rapidement Une solution basée sur les expériences d'une équipe d'architectes très expérimentés ( architecture et code) Une solution validée par des projets clients. 24 janvier 2008 4
  • 5. Présentation  Résultat de la génération : Une application Java/J2EE Compatible avec les principales bases de données (Oracle, Mysql, ...) Disposant d'une architecture validée, basée sur des standards reconnus Utilisant les frameworks les plus courants (Hibernate, Spring, Struts ...) Compatible avec Java 1.4 ou 1.5 Basé sur des outils Open-source Directement déployable sur un serveur d'application ou conteneur web. Facile à customiser et à faire évoluer. 24 janvier 2008 ST Informatique SERVICES 5
  • 6. Architecture de l'application  Architecture à 3 couches : Couche présentation Couche métier (service) Couche d'accès au données 24 janvier 2008 ST Informatique SERVICES 6
  • 7. Architecture de l'application Avantages d'une architecture à 3 couches :  Couches indépendantes les unes des autres  Facilité de maintenance  La gestion des données et la logique métier peuvent être indépendantes du type d'interface  Le travail en équipe est optimisé  Factorisation de code et utilisation de framework ou composants génériques (gain de temps et performances) 24 janvier 2008 ST Informatique SERVICES 7
  • 8. Architecture de l'application  la couche présentation :  Affiche les données  Envoie les demandes de l'utilisateur à la couche métier pour qu'elle les effectue  Reçoit les résultats renvoyés par la couche métier et les affiches Basée sur l'utilisation de framework MVC notamment Struts L'utilisation de frameworks MVC permet d'organiser la couche présentation pour qu’elle soit plus robuste, plus fiable et plus facile à faire évoluer 24 janvier 2008 ST Informatique SERVICES 8
  • 9. Architecture de l'application  la couche métier (service) :  Reçoit et analyse les demandes de l'utilisateur  Retrouve et modifie les données via la couche données  Renvoie les résultats à la couche présentation  Basée sur des Javabeans 24 janvier 2008 ST Informatique SERVICES 9
  • 10. Architecture de l'application  Utilisation d'hibernate pour la couche d'accès aux données:  Assure les fonctions CRUD  Assure la sécurité et l'intégrité des données  Support d'hibernate 2 et 3  Portabilité vers différentes bases de données  Possibilité de customiser hibernate pour améliorer les performances 24 janvier 2008 ST Informatique SERVICES 10
  • 11. Architecture de l'application  Utilisation de Spring pour les liens entre couches:  Permet de laisser les couches indépendantes les unes des autres  configuration au niveau du conteneur  Idéal pour de la conception à base d'interfaces (DAO) 24 janvier 2008 ST Informatique SERVICES 11
  • 12. Code source  Organisation de l'application sous forme de package: Couche d'accès aux données Couche service Couche présentation Répertoire de tests Répertoire racine de l'application 24 janvier 2008 ST Informatique SERVICES 12
  • 13. Code source  Facilement maintenable  Peut être importé directement dans Eclipse  Le projet contient des Junits (pour les couches service et d'accès aux données) ainsi que des HttpUnits (pour la couche présentation)  Internationalisation de l'application (anglais et français) 24 janvier 2008 ST Informatique SERVICES 13
  • 14. Code source  Code commenté et formaté Exemple code source de struts pour la couche présentation /** * Execute the <code>ListAAction</code>. * @param mapping The <code>ActionMapping</code> used to select this instance. * @param form The optional <code>ActionForm</code> bean for this request (if any). * @param request The HTTP request we are processing * @param response The HTTP response we are processing * @throws Exception if an error occurs. */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws java.lang.Exception { try { // Get the AService AService srvc = ServiceFactory.getInstance().getAService(); // Get all A List<A> list = srvc.getAll(); request.setAttribute("ALIST", list); } catch (ServiceException e) { if (e.getMessageKey() != null) { ActionErrors messages = new ActionErrors(); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(e.getMessageKey(), e.getValues())); saveErrors(request, messages); } else { throw e; } } return mapping.findForward("success"); } 24 janvier 2008 ST Informatique SERVICES 14
  • 15. Code source Exemple code source de la couche présentation /** /** * Get the <code>A</code> specified by its primary key. * Save the specified <code>A</code>. * @param pk The primary key of the <code>A</code> to get. * @param a The <code>A</code> to save. * @return The <code>A</code> found, null otherwise. * @return The newly created <code>A</code>. * @throws ServiceException if an error occurs. * @throws ServiceException if an error occurs. */ */ public A findByPK(Serializable pk) throws ServiceException public A create(A a) throws ServiceException { { try { try { // Check arguments // Check arguments if (a == null) { if (pk == null) { throw new IllegalArgumentException("a throw new IllegalArgumentException("pk parameter is null"); parameter is null"); } } // Create // Find by primary key A result = this.aDao.create(a); A a = this.aDao.findByPK(pk); return result; return a; } catch (Throwable t) { } catch (Throwable t) { if (trace.isErrorEnabled()) { if (trace.isErrorEnabled()) { trace.error("Could not create A", t); trace.error("Could not find A by PK", t); } } throw new ServiceException(t); throw new ServiceException(t); } } } } 24 janvier 2008 ST Informatique SERVICES 15
  • 16. Code source Exemple code source de la couche d'accès aux données /** * ADaoHb8 Hibernate3 implementation. * @author STI Generator * @spring.bean id="aDao" * @spring.property name="sessionFactory" ref="sessionFactory" */ public class ADaoHb8 extends HibernateDaoSupport implements ADao { /** * Default constructor, constructs a <code>ADaoHb8</code>. */ public ADaoHb8() { super(); } /** * Get all the <code>A</code> from the database. * @return All the <code>A</code> from the database. * @throws PersistenceException if an error occurs. */ public List<A> getAll() throws PersistenceException { Session session = SessionFactoryUtils.getSession(getSessionFactory(), false); try { Query query = session.getNamedQuery("a.all"); List<A> objList = query.list(); return objList; } catch (Throwable t) { throw new PersistenceException(t); } } ... ..... 24 janvier 2008 ST Informatique SERVICES 16
  • 17. Les avantages  Amélioration de la qualité Conception et framework créés par des architectes J2EE Architecture et intégration des produits validées Code basé sur les bonnes pratiques Permet aux développeurs de focaliser leur énergie sur l'implémentation du code spécifique métier Applications faciles à tester  Réduction des risques liés aux choix des technologies Solutions choisies par des experts Technologies matures et fortement utilisées Technologies connues des développeurs 24 janvier 2008 ST Informatique SERVICES 17
  • 18. Les avantages  Réduction des coûts Moins de code à implémenter Pas besoin d'experts pour les évolutions Facilité de maintenance (architecture, code) Optimisation de la maintenance (architecture commune)  Réduction du temps de développement Pas besoin de faire de la conception sur le design applicatif Pas besoin d'implémenter le framework de l'application Pas besoin d'écrire les fonctionnalités basiques Le code généré sert d'exemple pour les évolutions 24 janvier 2008 ST Informatique SERVICES 18
  • 19. L'application obtenue  Page d'affichage avec la liste de toutes les tables  Sélection d'une table : affichage colonnes et lignes Consulter, créer, modifier et supprimer pour chaque ligne Création: ouverture d'un formulaire de saisie Modification : affichage du formulaire pré-rempli Tri de 1er niveau sur une colonne  Écran d'affichage des relations entre tables  Validation de la saisie Contrôle du type :date, nombre Validation de la saisie obligatoire (not-null), si nécessaire 24 janvier 2008 ST Informatique SERVICES 19
  • 20. La customisation : le metier, la présentation  La couche métier Possibilité de détacher la couche métier de la présentation pour la lier à une autre couche (par exemple un client lourd) Les liens entre la couche présentation et la couche métier et ceux entre les couches métiers et de persistance sont réalisés. Il suffit d'ajouter le code spécifique au métier.  La couche présentation L'architecture de la navigation étant faite, pour customiser la présentation il suffit de changer la configuration et le code Struts Le style des pages se fait par l'intermédiaire de feuilles de style CSS, il suffit donc de les changer pour changer de style 24 janvier 2008 ST Informatique SERVICES 20
  • 21. Le périmètre actuel et futur  Le périmètre actuel Choix des frameworks Struts, JSTL et CSS pour la couche présentation Spring pour les liens entre couches Hibernate 2 et 3 pour la couche de persistance Support de JDK 1,4+ Possibilité de générer des tests JUnits et HttpUnit Personnalisation du style CSS. Support d'Oracle, MySql, PostgreSql, HsqlDB, SqlServer Opération de création, de modification, de suppression, de visualisation et de tri sur les Objets. 24 janvier 2008 ST Informatique SERVICES 21
  • 22. Le périmètre actuel et futur  Le périmètre futur Support de Spring MVC et Struts2 pour la couche présentation Mise en place de filtres sur les colonnes Introduction de composants AJAX. Génération d'application client lourd (type swing) 24 janvier 2008 ST Informatique SERVICES 22
  • 23. Contacts Pour toute information complémentaire: ST Informatique 65, allée de Bellefontaine – 31100 Toulouse Tel: 05 61 43 76 24 Fax: 05 61 41 72 48 dominique.turpin@stinfoservices.net www.stinfoservices.net 24 janvier 2008 ST Informatique SERVICES 23