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

Hibernate Java Discussion :

Ehcache qui ne fonctionne pas ?


Sujet :

Hibernate Java

  1. #1
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut Ehcache qui ne fonctionne pas ?
    Salut,
    Je tente de mettre en pratique un cache de second niveau. Ce cache utilise ehcache.xml
    ehcache est configuré, j'ai rajouté un fichier ehcache.xml et je n'ai pas de warning de sa part m'indiquant qu'il ne le trouve pas (ce qui arrive si je ne mets pas de fichier).

    Mon souci c'est que je n'utilise pas le cache. Je constate avec show_sql que je fais des requêtes à chaque fois.

    J'ai bien ajouté : <cache usage="read-write"/> dans mes fichiers xml et ma méthode findAll est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public List findAll (Class refClass) {
            return getHibernateTemplate().loadAll(refClass);
        }
    Une idée ?

  2. #2
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Bonjour,

    Si je me rappelle bien, il ne suffit pas d'activer le cache pour qu'il fonctionne sur les requêtes. Est-ce que tu l'as aussi activé pour les requêtes Hibernate avec :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="cache.use_query_cache">true</property>

    a++

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    Si je ne me trompe pas, tu parles du cache de requêtes. Moi j'aimerais activer le cache de second niveau.

    Je me suis inspiré de cet article :
    http://www.devx.com/dbzone/Article/29685/0/page/1
    Ils parlent du cache de requête en page 4 :
    http://www.devx.com/dbzone/Article/29685/0/page/4

  4. #4
    Membre éclairé Avatar de bouchette63
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 257
    Par défaut
    Regardes sur ce lien : ICI
    Et télécharges le Chapitre 9 (l'outillage Hibernate) libre en consultation. Il montre un exemple de mise en oeuvre d'EHCache, peut-être que cela peut t'aider.

    a++

    Edit : Pour activer le cache de second niveau en utilisant EHCache, on doit ajouter dans le fichier de conf Hibernate :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <property name="cache.use_second_level_cache">true</property> 
    <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

  5. #5
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    Merci pour l'article, c'était instructif.
    Dedans il indique que pour voir si le cache est bien activé, il faut voir un log au démarrage, et je vois ceci :

    INFO : Second-level cache: enabled
    INFO : Query cache: disabled
    INFO : Cache provider: org.hibernate.cache.EhCacheProvider
    INFO : Optimize cache for minimal puts: disabled
    INFO : Structured second-level cache entries: disabled
    Donc j'ai bien mon cache de second niveau activé. Par contre mon cache de requête est désactivé parce que je n'ai pas utilisé "cache.use_query_cache=true", c'est normal.

    Par contre, je ne comprends pas ces deux la :

    INFO : Optimize cache for minimal puts: disabled
    INFO : Structured second-level cache entries: disabled

    Et même s'il me dit que mon cache de second niveau est activé, ca l'empêche pas de me faire une requête a chaque fois ^^

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    As-tu ajouté cette balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <cache usage="read-only"/>
    dans ton mapping ?

    A toi de modifier l'attribut usage à ta guise.

  7. #7
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    Tout a fait, j'ai mis read-write

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Je pense que la méthode loadAll de la classe HibernateTemplate, utilise une requête pour récupérer les données.
    Essaie d'activer le cache de requêtes et ça devrait fonctionner.

    Le cache de second niveau ne fonctionne que pour certaines opérations:
    load(), get(), list(), iterate() or scroll().
    Il faudrait voir la source de la méthode loadAll pour être certain du fonctionnement.

Discussions similaires

  1. Code qui ne fonctionne pas sur Mac
    Par malbaladejo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 11h08
  2. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 19h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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