首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate缓存对策之二级缓存

2012-08-25 
Hibernate缓存策略之二级缓存一级缓存,即session级缓存,是最最重要的,因为它不能够被取消,现在看看二级缓

Hibernate缓存策略之二级缓存

一级缓存,即session级缓存,是最最重要的,因为它不能够被取消,现在看看二级缓存.

?

?Hibernate二级缓存不是由本身维护的,它是由第三发缓存框架来提供的。看一下如何使用二级缓存:

? 测试代码如下:

Session session = HibernateUtil.openSession();try{session.beginTransaction();//将发出SQL查询语句查询实体对象的数据Person p = (Person)session.load(Person.class, 1);System.out.println(p.getName());//实体对象已经被缓存,所以下列操作不再发出SQL语句Person p2 = (Person)session.load(Person.class, 1);System.out.println(p2.getName());session.getTransaction().commit();}catch(Exception e){e.printStackTrace();session.getTransaction().rollback();}finally{//session关闭之后,当前session对象中的一级缓存已经被清空session.close();}Session session2 = HibernateUtil.openSession();try{session2.beginTransaction();session.getSessionFactory().getCache().evictEntityRegion(ContactPerson.class);//由于清空了二级缓存,所以再次发出SQL语句Person p = (Person)session2.load(Person.class, 1);System.out.println(p.getName());//不再发出SQL语句!Person p2 = (Person)session2.load(Person.class, 1);System.out.println(p2.getName());session2.getTransaction().commit();}catch(Exception e){e.printStackTrace();session2.getTransaction().rollback();}finally{session2.close();}

?如果定义二级缓存为只读缓存那么是不允许修改的。

了解下缓存模式,即如何跟二级缓存进行交互:CacheMode

?

?

热点排行