2012-01-16 3 views
0

J'ai un bean qui appelle essentiellement getSession().createCriteria(ObjClass.class).list(); chaque fois qu'une demande est faite. Il faut 16 secondes pour tout charger la première fois, alors cela prend comme 1 ou plus. La chose est que dans une unité de test, le cache fonctionne très bien, mais lorsque plusieurs requêtes sont faites à un bean, il n'utilise même jamais le cache. La question est pourquoi? Info: il s'agit d'un cache Hibernate (3.5.x) de deuxième niveau (2.0) avec org.hibernate.cache.HashtableCacheProvider et l'utilisation du cache au niveau de la requête est activée. Utiliser le bean étendu de la requête 3.3.3 avec keepfeed activé.Le cache Hibernate ne fonctionne pas avec le bean RichFaces

Répondre

0

Si vous ne faites pas la requête de cachable, il ne sera pas mis en cache:

getSession().createCriteria(ObjClass.class) 
      .setCacheable(true) 
      .list(); 

Vous pouvez également définir la région de cache pour une configuration plus fine.

+0

Je ne mets pas la requête en cache dans les tests et les tests utilisent le même DAO que le bean. –

+0

N'a pas aidé, il a fallu 16 secondes avant, maintenant il prend 17 première fois et réduit jusqu'à 16. –

+0

La classe ObjClass est-elle cacheable? Avez-vous regardé les requêtes SQL générées? –

Questions connexes