|
查询缓存.处理的是普通属性的结果集.也就是说,他缓存的是普通属性结果集.(其实还有实体集的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();
} |
|