2014-05-11 3 views
1

Je souhaite configurer le cache de requêtes sans cache de second niveau pour un but d'apprentissage car j'ai lu qu'il peut être fait mais pour moi le cache de requêtes fonctionne uniquement avec le cache de second niveau.Configurer le cache de requêtes sans cache de second niveau

Voici ma configuration

<property name="cache.use_query_cache">true</property> 

classe entité est

@Entity 
public class Company {} 

mais quand je fais

session = factory.openSession(); 
Query getQuery=session.createQuery("from Company where companyId=1"); 
getQuery.setCacheable(true); 
Object company2 = getQuery.uniqueResult(); 
session.close(); 

session = factory.openSession(); 
getQuery=session.createQuery("from Company where companyId=1"); 
getQuery.setCacheable(true); 
company2 = getQuery.uniqueResult(); 
session.close(); 

Deux requêtes distinctes sont tirés.

Dès que je fais

@Entity 
@Cacheable 
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE) 
public class Company {} 

travail du cache de requêtes, mais il permet le cache de second niveau également. Alors, comment configurer la requête cache sans activer le cache de second niveau?

Répondre

0

Le cache de requête a besoin du cache de second niveau pour effectuer son travail, puisque les résultats des requêtes sont ensuite récupérés dans le cache de second niveau. Le cache de requête conserve uniquement la trace d'une requête et l'ensemble des identifiants renvoyés par la requête. Ces identifiants sont ensuite récupérés du cache de second niveau à partir d'une augmentation de vitesse supplémentaire. Où avez-vous lu que vous pourriez avoir un cache de requêtes sans cache de second niveau?

Questions connexes