hibernate的查询缓存

来源:互联网 发布:linux tar解压zip 编辑:程序博客网 时间:2024/05/22 08:19

查询缓存是在二级缓存的基础上,所以要想开启查询缓存,还要在hibernate,cfg.xml文件中多加一个属性:开启查询缓存:

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

下面是查询缓存的使用

    @Test    public void testQueryCache(){        Session session=sessionFactory.openSession();        Query query=session.createQuery("from Classes");        //开启把获取到的信息放到查询缓存中        query.setCacheable(true);        List<Classes> classes=query.list();        query=session.createQuery("from Classes");        //开启从缓存中获取信息        query.setCacheable(true);        classes=query.list();        session.close();    }

运行之后,hibernate发出一条sql语句:

Hibernate: select classes0_.cid as cid0_, classes0_.cname as cname0_, classes0_.cdescription as cdescrip3_0_ from Classes classes0_

但是由于上面两条query语句查询的内容都是一样,那么我们来试一下不一样的hql语句:

@Test    public void testQueryCache(){        Session session=sessionFactory.openSession();        Query query=session.createQuery("from Classes");        query.setCacheable(true);        List<Classes> classes=query.list();        //从from Classes改成如下        query=session.createQuery("select cname from Classes");        query.setCacheable(true);        classes=query.list();        session.close();    }

运行之后,发出了2条sql语句:

Hibernate: select classes0_.cid as cid0_, classes0_.cname as cname0_, classes0_.cdescription as cdescrip3_0_ from Classes classes0_Hibernate: select classes0_.cname as col_0_0_ from Classes classes0_

如果需要不断的查询某些相同的数据,即如果它们的的sql语句是一样的话,要进行很多次查询,那么使用查询缓存,效率将大大提高

0 0
原创粉丝点击