管理Hibernate的缓存

  

1. 什么是缓存?

介于应用程序和硬盘之间的临时存储空间——称为缓存;使用缓存可以明显提升应用程序性能(降低磁盘访问的次数)。

 磁盘的访问次数愈多,相对的程序的性能就越低...

缓存可以理解为内存中一块特殊的存储区域。

 

2. 为什么需要使用缓存(优缺点)?

2.1 优点:提升应用程序性能(N倍增加)。

2.2 缺点:消耗大量的内存空间;经常发生变化的数据,不适合使用缓存(更新数据时,需要更新缓存+物理磁盘数据)。

 

3. Hibernate中缓存的分类?

Hibernate提供两种缓存的使用:一级缓存(Session)、二级缓存(SessionFactory)。

一级缓存Hibernate默认使用(必须使用);

二级缓存可选。

常见的二级缓存:EHCache、OSCacheSwramCache JBossCache缓存。

 

4. 如何使用缓存?

一级缓存(Session缓存)——默认缓存。

Session对象在查询数据时,先到缓存中检测是否存在该数据。

(有:直接获取;没有:到数据库中查询,将数据存放在session缓存中)

缓存清除两种情况:1. 手动清除缓存。  2. 关闭Session。

清除缓存:session.evict(对象名);

 

二级缓存(SessionFactory缓存)——外部插件(EHCache)。

原理:查询的数据,会自动存放在SessionFactory中,只要SessionFactory不关闭,数据始终存在。(Session每次获取数据时都会到二级缓冲中查找)。

 

配置二级缓冲步骤:

1. 导入EHCachejar包。

2. 在hibernate.cfg.xml中配置二级缓冲(启用二级缓存)。

记得在hibernate.cfg.xml文件中添加:

<property name="show_sql">true</property>
 <property name="cache.use_query_cache">true</property>
 <property name="cache.use_second_level_cache">ture</property>
 <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>这几个属性!

3. 在src目录下,添加一个配置文件(ehcache.xml)用来配置缓存的对象。

4. 在xxxx.hbm.xml中添加<cache>标签用来表示是否缓存该对象。

 

注意:HQL语句默认不会执行缓存查询;如果需要添加缓存查询功能:

1. 在hibernate.cfg.xml中添加属性:cache.use_query_cache = true;

2. 在Query对象中设置setCacheable(true).list();

 

一般情况下,在单个类与set中添加缓存!

posted @ 2012-12-11 21:55  全力以赴001  阅读(236)  评论(2编辑  收藏  举报