| 
 | 
 
| 
 
 查询缓存.处理的是普通属性的结果集.也就是说,他缓存的是普通属性结果集.(其实还有实体集的ID)  
注意,一级缓存和二级缓存都只是缓存实体对象. 
 
(1)查询缓存的生命周期是不确定的..只要当前查询缓存关联的表被修改,那么这个查询查询的生命周期就结束了 
 
(2)查询缓存与session没有关系.也就是说,他可以再不同的session之间实现缓存. 
 
(3)查询缓存默认是关闭的 
 
具体的用法也很简单 
 
(1) 在hibernate.cfg.xml里面启动查询缓存 
 
<property name="hibernate.cache.use_query_cache">true</property> 
 
(2) 在具体应用中开启查询缓存...看下面的方法 
 
@Test 
 public void test8() 
 { 
  Session session = HibernateSessionFactory.getSession(); 
  Transaction tx = session.beginTransaction(); 
   
  Query query = session.createQuery("select sname from Student"); 
  query.setCacheable(true);//在这里打开查询缓存. 
  List<String> list = query.list(); 
   
  for(int i = 0; i < list.size(); i++) 
  { 
   System.out.println(list.get(i)); 
  } 
  tx.commit(); 
  session.close(); 
   
  session = HibernateSessionFactory.getSession(); 
  tx = session.beginTransaction(); 
   
  query = session.createQuery("select sname from Student"); 
  query.setCacheable(true); 
  list = query.list(); 
   
  for(int i = 0; i < list.size(); i++) 
  { 
   System.out.println(list.get(i)); 
  } 
  tx.commit(); 
  session.close(); 
 } |   
 
 
 
 |