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

JSF Java Discussion :

Tutoriel JSF, Spring et Hibernate


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Points : 27
    Points
    27
    Par défaut Tutoriel JSF, Spring et Hibernate
    Bonjour,

    Pour créer un de mes projets j'ai adopté la même architecture que celle du tutoriel de Alexis Hassler. Donc avec les 3 paquets model, service et web, à la seule différence que dans le paquet service, j'ai bien sur ajouté d'autres fonctions lesquelles sont en liaison avec la base de données, comme par exemple pour ma classe Client :
    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
    public interface ClientService {
     
        List<Client> findAll();
     
        Client findById(Long id);
     
        Client findByNumero(String numero);
     
        void save(Client client);
     
        void delete(Client client);
     
        BigDecimal getClientSequence();
     
        List<Client> findMultiCriteria(String nom, String prenom, String cin);
    }
    Le problème est que parfois, dans les fonctions de mes Beans managés je suis amené à faire appel à des services métiers comme c'est le cas dans cet exemple pour mon Bean "DemandeBean".
    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 void ajoutDemande() {
     
            // -------- Récupération du client et produit relatifs à la demande
            Client client = clientService.findByNumero(this.client.getNumero());
            Produit produit = produitService.findByLibelle(this.produit
                    .getLibelle());
     
            // --------- Récupération du l'utilisateur gérant la demande
            @SuppressWarnings("static-access")
            AuthentificationBean authentificationBean = (AuthentificationBean) JsfUtil
                    .getInstance().getHttpSession()
                    .getAttribute("authentificationBean");
            String login = authentificationBean.getLogin();
            String password = authentificationBean.getPassword();
            Utilisateur utilisateur = utilisateurService.findByLoginAndPassword(
                    login, password);
     
            // ------- Insertion de la demande
            if (client != null && produit != null && utilisateur != null) {
                demande.setClient(client);
                demande.setUtilisateur(utilisateur);
                demande.setProduit(produit);
                demandeService.save(demande);
            }
        }
    Je me demandais si c’était vraiment une façon propre de faire la chose ? Si ajouter une autre couche aurait été une bonne idée ?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut
    Bonjour,

    Ca dépend de ton projet, si la couche métier fait le même travail que la couche DAO (simple appel de méthode), alors tu peux directement négliger cette couche.

    Autrement dit, si dans la couche métier t'as des méthodes qui vont appeler la couche DAO, sans aucun traitement, tu peux travailler directement avec la couche DAO.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Dans mon cas je vais avoir besoin d'une autre couche ! Je voudrai bien avoir l’avis de hasalex

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Merci de faire de la pub pour mon tuto Malheureusement, il commence à être ancien puisque je l'avais fait en 2008 ! Je n'ai malheureusement pas eu le temps d'en refaire un autre depuis.

    Pour revenir à la question : il n'y a pas besoin de couche supplémentaire. Un Bean JSF peut très bien accéder aux classes de service. Ça ne sert à rien de multiplier les couches si elles n'ont pas de responsabilité claire.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Donc, comment je pourrais faire en sorte que les appels aux fonctions des différents services (clientService, produitService, utilisateurService), dans ma fonction ajoutDemande(), soient en un mode transactionnel ?

    Je pense que l'annotation @Transactional ne peut être utilisée au niveau du ManagedBean...

Discussions similaires

  1. Réponses: 14
    Dernier message: 05/03/2015, 16h50
  2. Recherche sources JSF + Spring 3 + Hibernate / JPA
    Par pschiit dans le forum Spring
    Réponses: 2
    Dernier message: 28/11/2012, 16h09
  3. Tutoriel JSF, Spring et Hibernate
    Par zakarov dans le forum JSF
    Réponses: 4
    Dernier message: 07/08/2012, 17h48
  4. Réponses: 3
    Dernier message: 23/01/2012, 17h13
  5. Tutoriel JSF + Spring + Richfaces
    Par gotteserbin dans le forum JSF
    Réponses: 2
    Dernier message: 05/11/2010, 12h45

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