hibernate——缓存

/**
 * Created by Administrator on 2018/11/16 0016.
 * 一级缓存 Session
 * 二级缓存 SessionFactory
 * 查询缓存 createQuery
 */

一级缓存 

get,load方法自动从一级缓存中查找,如果存在缓存对象,直接使用
@Test
    public void firstLevel(){
        Session session = HibernateUtil.getCurrentSession();

        Province p = session.get(Province.class,1);

        Province p1 = session.get(Province.class,1);

        HibernateUtil.close(session);
    }

二级缓存

hibernate.cfg.xml配置


        <!--使用二级缓存-->
        <property name="hibernate.cache.use_second_level_cache">true</property>
        <!--配置二级缓存服务商-->
        <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
@Test
    public void sencondLevel(){
        Session session = HibernateUtil.getCurrentSession();

        Province p = session.get(Province.class,1);

        HibernateUtil.close(session);

        Session session1 = HibernateUtil.getCurrentSession();

        Province p1 = session1.get(Province.class,1);

        session1.beginTransaction();
        p1.setName("aaaaa");
        session1.saveOrUpdate(p1);
        session1.getTransaction().commit();

        HibernateUtil.close(session1);

    }

查询缓存

hibernate.cfg.xml配置

<!--使用查询缓存-->
        <property name="cache.use_query_cache">true</property>
@Test
    public void queryCache(){
        Session session = HibernateUtil.getCurrentSession();

        List<Province> provinceList = session.createQuery("from Province ").setCacheable(true).list();

        HibernateUtil.close(session);

        Session session1 = HibernateUtil.getCurrentSession();

        List<Province> provinceList1 = session1.createQuery("from Province ").setCacheable(true).list();

        HibernateUtil.close(session1);

    }

猜你喜欢

转载自blog.csdn.net/qq_41534115/article/details/84308151