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

Seam Java Discussion :

Seam - Contexte Application ou gestion d'un cache ?


Sujet :

Seam Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut Seam - Contexte Application ou gestion d'un cache ?
    Bonjour à toutes et à tous,

    Je développe un site ecommerce en ce moment et je m'appuie sur Seam 2.

    J'aurais besoin de charger au démarrage de l'application, la liste des villes, des pays, des categories ou encore toutes autres données qui seraient suceptibles de ne pas évoluer ... de manière à eviter les accès BDD.

    Aujourd'hui dans mon application et notamment dans mon bean RegisterAction par exemple, j'initialise ma liste de pays de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	@Factory("listePays")
    	public List<SelectItem> getPays() {
    		List<SelectItem> itemsList = new ArrayList();
    		List<TaRefPays> pays = em.createQuery("from TaRefPays").getResultList();
    		for (Iterator iterator = pays.iterator(); iterator.hasNext();) {
    			TaRefPays taRefPays = (TaRefPays) iterator.next();
    			itemsList.add(new SelectItem(taRefPays.getIdPays(), taRefPays.getPays()));
    		}				
    		return itemsList;
    	}
    Quelle est la meilleure solution pour ne pas charger les listes à chaque utilisation :
    • Utiliser des variables avec comme contexte Application ? Si oui, ou et comment initialiser mes listes ? Y a t'il un moyen dans Seam de les initialiser au démarrage ?
    • Gérer un cache ?


    Merci de votre aide ....

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bonjour,

    De mon côté, je proposerais, via des Services (et donc pas au niveau de la couche de beans), des méthodes permettant de récupérer la liste des villes, des pays, etc.
    Lors de la première demande de cette liste de la part d'un bean, j'irais chercher ces valeurs dans la base de données. Je retournerais alors cette liste au bean demandeur, tout en conservant cette liste au niveau du service pour les prochains accès.
    Un exemple rapide de code du service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private List<Country> countries = null;
     
    public List<Country> getAllCountries() {
        if (countries ==  null) {
            // Cas pour le 1e accès à la liste des pays.
           countries = countryDao.findAllCountries();
        }
        return countries;
    }
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Autre chose, je te conseille de lire certains posts, parce qu'exécuter des requêtes pour la base de données directement dans un bean, c'est vraiment pas super !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut
    Merci de ta réponse mais je pense que tu n'as pas bien compris ma question en fait !!

    J'utilise seam. Je ne suis pas dans une architecture en 3 couches ou pas directement. Je ne vais pas revenir sur l'architecture de Seam mais je suis dans une configuration EJB/JPA-Hibernate

    De plus ma question ne concerne pas que la session de l'utilisateur mais le contexte de l'application. En effet, ce que je souhaite c'est charger mes listes au démarrage de l'application et non pas au moment ou s'identifie l'utilisateur pas exemple ...

    Je suis plus clair ou pas ... mais pour m'aider il faut connaitre un peu Seam

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Bon, soit pour ma 2e remarque (même si j'ai des doutes, mais bon, là n'est pas la question).

    Pour ton problème, ma solution fonctionne quand même : tu fais un getter pour retourner ta liste de pays / villes / catégories / choucroutes / etc., où, lors du premier appel à ce getter, ta classe va initialiser la liste.
    Sauf que là, tu t'arranges pour que le getter soit appelé au démarrage de ton application, et non plus en attendant qu'un utilisateur se loggue pour la première fois par exemple...
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 50
    Par défaut
    OK, là nous sommes en phase !

    Donc ma question est bien la suivante :

    Avec Seam, j'insiste , comment exécuter au démarrage d'une application une liste de tâches ?

    Merci.

  7. #7
    Membre chevronné

    Inscrit en
    Février 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 122
    Par défaut
    Autre chose en Seam il est plutot déconseillé d'utiliser des SelectsItem, à prioris ici tu te rajoute du travail.

    Regarde du coté de s:convertEntity pour ta JSF, tu pourras ainsi te contenter de recupérer une liste d'ejb entity s'ils sont annotés:

    et une fois que tu souhaite les utiliser dans une jsf par exemple un h:selectOneMenu:
    <h:selectOneMenu value-"#{laValueABinder}" id=".." name="..." >
    <s:selectItems value="#{ta_liste_d_EJB}" var="nom" label="#{nom.value}" />
    <s:convertEntity />
    </h:selectOneMenu>

    seam se debrouille alors tout seul avec tes ejb sans avoir besoin d'objet intermediaires.

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

Discussions similaires

  1. mysql et les application de gestion venez en discussion
    Par hama dans le forum Administration
    Réponses: 1
    Dernier message: 05/12/2005, 13h19
  2. Application de gestion des sms sur PC
    Par andyvo dans le forum Langage
    Réponses: 9
    Dernier message: 20/10/2005, 23h49
  3. [Choix du langage] Application de gestion
    Par Topla dans le forum Langages de programmation
    Réponses: 15
    Dernier message: 14/10/2005, 17h40
  4. Application international (Gestion des dates)
    Par vsavoir dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/08/2005, 10h22
  5. application de gestion documentaire
    Par hanane28 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 10/06/2005, 16h08

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