/** * 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);
}