1、什么是缓存
a) 在内存中开辟一块空间,把本来应该存储在硬盘上的东西,放到内存里,将来再要读取的时候,从内存读取,这部分内容就是缓存。
2、什么是一级缓存
a) 即session级别的缓存
3、什么是二级缓存
a) SessionFactory级别的缓存,可以跨越session存在
组件 | Provider类 | 类型 | 集群 | 查询缓存 |
Hashtable | org.hibernate.cache.HashtableCacheProvider | 内存 | 不支持 | 支持 |
EHCache | org.hibernate.cache.EhCacheProvider | 内存,硬盘 | 不支持 | 支持 |
OSCache | org.hibernate.cache.OSCacheProvider | 内存,硬盘 | 支持 | 支持 |
SwarmCache | org.hibernate.cache.SwarmCacheProvider | 集群 | 支持 | 不支持 |
JBoss TreeCache | org.hibernate.cache.TreeCacheProvider | 集群 | 支持 | 支持 |
查询缓存
在二级缓存中有一个特殊的缓存叫做查询缓存,查询缓存说的是,同样的重复的查询,能够从二级缓存中查找,从而提高效率。如果两个查询不重复,不重叠,则不起作用。
查询缓存依赖于二级缓存,所以使用查询缓存的时候一定要打开二级缓存
a) 使用二级缓存,需要增加如下片段
<property name="cache.use_query_cache">true</property>
b) 还需要调用Query的setCatchable(true)方法指明使用二级缓存
原文地址:http://blog.csdn.net/yaguanzhou2014/article/details/42753489