2014-05-11 96 views
1

我想配置查詢緩存沒有二級緩存的一些學習目的,因爲我已經讀過它可以完成,但對我來說,查詢緩存僅適用於二級緩存。配置沒有第二級緩存的查詢緩存

這裏是我的配置

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

實體類

@Entity 
public class Company {} 

但是當我做

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(); 

兩個單獨的查詢被解僱。

當我做

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

查詢緩存的工作,但它使二級緩存也。那麼如何在不啓用二級緩存的情況下配置查詢 緩存?

回答

0

查詢緩存需要第二級緩存來完成它的工作,因爲查詢的結果是從第二級緩存中檢索的。查詢緩存只是跟蹤查詢和查詢返回的一組ID。然後從二級緩存中檢索這些ID以進一步提高速度。你在哪裏讀過你可以擁有沒有二級緩存的查詢緩存?

相關問題