Hibernate之查询缓存(The Query Cache)

查询的结果集也可以被缓存。只有当经常使用同样的参数进行查询时,这才会有些用处。

 

   Query Cache中保存了之间查询操作执行过的Select SQL,以及由此查存产生的查询结果集(包括查询对象的类型和id);之后,如果再次发出查询请求时,Hibernate会根据查询的SQL从Query Cahce中检索,如果此SQL曾经执行过,则取出对应这个SQL所检索出来的结果集,再根据这个结果集中的对象类型和id,从缓存中取出对应的实体对象返回;

 

   Query Cache中缓存的SQL及结果集并非一直存在,当Hibernate发现此SQL对应的库发生变动(Update/Delete/Insert),会自动将Query Cahce中对应表的SQL缓存废除。因此,Query Cahce只在特定的情况下使用;

  • 完全的Select SQL重复执行
  • 在两次查询之间,此Select SQL对应的表没有发生变动

但是,以上的两种情况限制比较严格,所以hibernate默认的是将其关闭,需要使用时候可以通过配置属性将其打开:

hibernate.cache.use_query_cache true

 之后必须在Query的查询执行之前,将Query.Cacheable设为true:

Query query = session.createQuery(hql);
query.setCacheable(true);
 

 

 

你可能感兴趣的:(sql,Hibernate,cache)