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 Web Java Discussion :

Responsabilité Struts / Spring


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Par défaut Responsabilité Struts / Spring
    Bonjour à tous,
    Je bosse sur un projet d'appli web ou nous utilisons Struts, Spring et Hibernate.
    J'ai un doute sur la façon dont nous avons développé, et de "la bonne place" du code entre les deux premières couches, Struts et Spring. (côté Hibernate no soucy).
    Je précise qu'actuellement cela fonctionne, mais que l'on est pas dans les normes.

    Ex fonctionnel :
    Enregistrement d'un mouvement de stock.
    Pour un produit / une quantité donnés, on doit enregistrer en BDD un tuple (produit, quantité, entree/sortie).
    On doit ensuite décrémenter le stock pour le produit/la quantité donnés.

    Actuellement :
    Nous avons les classes suivantes :
    - deux javabeans,
    - une action,
    - une interface Spring "Bo"
    - une classe Spring "BoImpl"
    - une interface Hibernate "Dao"
    - une classe Hibernate "DaoImpl"

    Ce qui se passe, c'est que la classe Spring BoImpl ne contient aucun code métier. Elle fait directement appel à l'interface Dao et ne contient rien dans son corps. Tout se passe dans l'action.

    L'action Struts récupère les deux paramètres et fait les traitements suivants. [le code n'est pas exhaustif, je ne l'ai pas sous les yeux]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String refproduit = getId_produit();
    int quantitemvmt = getQuantite();
    dans l'action : pour le produit, on a la référence, et on va chercher l'objet entier en BDD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    produit = produitbo.findProduitById(getId_produit());
    (exemple code ProduitBoImpl)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public findProduitById(String refproduit){
           return produitdao.findProduitById(refproduit)
    }

    dans l'action : ensuite, création du Mouvement de stock, et sauvegarde

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mvmtstock = new MouvementStock(produit, quantitemvmt,"sortie")
    mvmtstockbo.save(mvmtstock)
    dans l'action : ensuite, on décrémente le Stock et on le sauvegarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    stock = stockbo.findStockByProduit(produit);
    stock.setQuantite = stock.getQuantite()-quantitemvmt;
    stockbo.save(stock);

    Je ne sais pas si c'est très clair mais je n'ai pas le code sous les yeux.
    Ce qui m'a frappé c'est que les BoImpl ne contiennent pas de code.

    Par exemple, ne serait ce pas de la responsabilité de BoImpl de définir la nouvelle quantité du stock ?

    Dans ce cas, à quoi se limite l'action ? Juste à la récupération des paramètres ?

    Merci d'avance de votre retour.
    Olivier

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut Architecture
    Hello,

    Je vois bien ce que le développeur a tenté de faire. Ca me paraît effectivement pas super courant mais bon...pourquoi pas à la limite.
    Les 2 approches classiquement utilisées par les devs sont l'approche SOA ou l'approche Model Driven (Active Record).

    La le dev a fait une espèce de mix un peu perturbant.

    • L'idée SOA c'est : Le controleur (Action Struts) exploite un ensemble de services qui exploite un ensemble de DAO. Les Objets métier et dits "de présentation" naviguent entre ses couches et son complètement agnostics (pas d'intelligence dedans)

    • L'idée ActiveRecord : Les objets métiers sont "intélligent" et sont en capacité de contrôler leur propre persistance. C'est la solution choisie ici mais avec l'introduction d'une couche DAO "parasite".


    Sur ta question concernant la quantité de stock, là je crains ne pas saisir.

    Sur la question, que fait un contrôleur, moi je dirai un peu de façon un peu "sarcastique" : essentiellement encapsuler le traitement de formulaires.
    Après c'est selon l'architecture choisie (SOA / ActiveRecord).
    Note que je précise souvent : En tous cas ce n'est pas lui qui à la charge de la gestion transactionnelle.

    A+

Discussions similaires

  1. Struts,Spring et Eclipse
    Par gazier20 dans le forum Struts 1
    Réponses: 4
    Dernier message: 08/04/2008, 12h53
  2. Struts - Spring - Hibernate et Héritage
    Par davdou dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/06/2006, 15h26
  3. Réponses: 2
    Dernier message: 16/02/2006, 09h04
  4. [struts][spring] creation objet
    Par mlequim dans le forum Struts 1
    Réponses: 2
    Dernier message: 13/01/2006, 12h05
  5. [AJAX][STRUTS][SPRING] Comment faire ?
    Par nighma dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/12/2005, 12h26

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