0%

hibernate三级缓存

文章字数:420,阅读全文大约需要1分钟

一级缓存

session级别,同一个session生命周期通样的查询最多一次请求。
就是一个管理对象的Map

1
2
3
4
5
6
//原理
1. 生成key==类权限名#id值
2. 从一级缓存找到key
3. 没找到从数据库找,存入map
session.clear();//清空一级缓存
session.evict(A);//清空一个数据

二级缓存

sessionFactory级别的缓存,使用第三方缓存。

1
2
3
4
5
6
7
8
//获得二级缓存对象
Cache cache=sessionFactory.getCache();
//剔除一个实例对象
cache.evictEntity(class,Long);
//剔除一个类的所有实例
cache.evictEntityRegion(class);
//剔除所有二级缓存中的实例
cache.evictEntityRegions();
1
2
hibernate.cache.use_second_level_cache=ture  //使用二级缓存
hibernate.cache.region.factory_class=EhCacheRegionFactory的全限名 //二级缓存是第三方,这儿选的是EhCache

三级缓存

查询缓存,query语句缓存。
但是存储使用List,有一个元素变了其他的都要变,所以一般只用于不变的List.