码迷,mamicode.com
首页 > Web开发 > 详细

hibernate二级缓存

时间:2015-03-14 20:09:03      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:hibernate   缓存   

hibernate二级缓存中包含四大区域

(1)类级别的缓存

类级别的缓存区域

 * 存放的是对象的散装数据,散装数据使用OID从新组织一个新的对象,散装数据中存放的是类中属性的值

(2)集合级别的缓存

集合级别的缓存区域

 * 存放的是对象的OID,如果要想获取真正的实体对象,还要到类级别的二级缓存中获取

 

总结:集合级别的缓存依赖于类级别的缓存

(3)查询级别的缓存

查询级别的缓存区域(重点),查询缓存指Query接口,Query接口支持HQL语句

1:存放的是hql语句的查询结果。

2:如果查询的是实体对象,此时将实体对象的值封装到类级别的缓存区域,需要使用OID查询类级别的缓存区域,获取数据,即如果需要获取真正的实体对象,还要到类级别的二级缓存中获取

3:如果查询的是投影条件,此时查询缓存将查询结果封装到查询缓存中,不会依赖于类级别的缓存。

总结:查询缓存封装的是hql语句的检索结果:

如果是hql语句的投影查询,查询缓存封装投影查询的结果

如果是hql语句的对象查询,查询缓存中存放OID,需要使用OID查询类级别的缓存区域

(4)更新时间戳级别的缓存

更新时间戳级别的缓存区域

 * (1)将查询的对象放置到类、集合、查询级别的二级缓存中一份,而且设置放置对象的时间T1

 * (2)当执行增、删、改操作的时候,更新时间戳会记录一个时间T2

 

如果当T1>T2的话,说明查询在后,更新在前,说明二级缓存中存放的数据是最新数据,那么此时从二级缓存中获取数据,不会查询数据库

 

如果当T1<T2的话,说明查询在前,更新在后,说明二级缓存中存放的数据不是最新数据,那么此时从二级缓存中获取数据,会查询数据库,查询到最新的结果

 

作用:保证二级缓存中的数据是最新的数据


本文出自 “Spring” 博客,谢绝转载!

hibernate二级缓存

标签:hibernate   缓存   

原文地址:http://9266356.blog.51cto.com/9256356/1620387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!