我对Hibernate二级缓存的理解
2013-09-21 15:22
274 查看
1.Hibernate中两个级别的缓存
a) 第一级别的缓存是 Session 级别的缓存,它是属于事务范围的缓存。这一级别的缓存由 hibernate 管理的,一般情况下无需进行干预,也可以理解为基于某个线程的(每次回话就是一次线程访问)
b) 第二级别的缓存是 SessionFactory 级别的缓存,它是属于进程范围的缓存
2.二级缓存
a) 当使用load或者get方法的时候,会将查询的结果放置到session的一级缓存中(以OID判断对象的唯一性),同时会把数据放置到二级缓存中一份(散装数据),放到二级缓存中,(是类级别的)··放置到二级缓存后, 只要服务器不关,sessionFactory就不会关闭,那么数据不会丢失
b) 散装数据:存放的不是持久化对象,而是持久化对象中属性的值。当从二级缓存获取数据的时候,重新将数据封装到对应持久化对象中,所以每个持久对象是不同的
二级缓存的分类
1.类级别的二级缓存 (散装数据)
a) 将类的实例放置到缓存中,存放查询实体的真实值(散装数据)
2.集合级别的二级缓存
a)存放的查询条件(即OID),真实的实体在类级别的二级缓存中
3.Query(查询)级别的二级缓存
a) 存放的查询条件(即OID),真实的实体在类级别的二级缓存中
4.更新时间戳级别的二级缓存
a) * * 当程序执行新增、修改、删除的时候,会在时间戳缓存区域产生一个时间 T2
b) * 目的是为了保证二级缓存中的数据时最新的数据
c) * 当T1<T2,说明此时更新在后,查询在前,此时二级缓存中存放的不是最新的数据,要想保证二级缓存中仍然存放的是最新的数据,那么就要再次查询数据库,从而获取到最新的数据
d) 当T1>T2,说明此时更新在前,查询在后,此时二级缓存中存放的是最新的数据,那么如果再次获取二级缓存中的数据的时候,不用再查询数据库,获取的是新的数据
1.缓存中存放的数据
a) 适合放入二级缓存的数据
i. 很少被修改
ii. 不是很重要的数据,允许出现偶尔的并发
b) 不适合放入二级缓存的数据
i. 经常被修改的数据
ii. 财务数据,绝对不允许出现并发问题
iii. 与其应用数据共享的数据
2.开启缓存不用所有的查询都通过数据库了(提高了查询效率),且二极缓存基于进程,只要服务器不关,所有访问者都可以使用该缓存
a) 第一级别的缓存是 Session 级别的缓存,它是属于事务范围的缓存。这一级别的缓存由 hibernate 管理的,一般情况下无需进行干预,也可以理解为基于某个线程的(每次回话就是一次线程访问)
b) 第二级别的缓存是 SessionFactory 级别的缓存,它是属于进程范围的缓存
2.二级缓存
a) 当使用load或者get方法的时候,会将查询的结果放置到session的一级缓存中(以OID判断对象的唯一性),同时会把数据放置到二级缓存中一份(散装数据),放到二级缓存中,(是类级别的)··放置到二级缓存后, 只要服务器不关,sessionFactory就不会关闭,那么数据不会丢失
b) 散装数据:存放的不是持久化对象,而是持久化对象中属性的值。当从二级缓存获取数据的时候,重新将数据封装到对应持久化对象中,所以每个持久对象是不同的
二级缓存的分类
1.类级别的二级缓存 (散装数据)
a) 将类的实例放置到缓存中,存放查询实体的真实值(散装数据)
2.集合级别的二级缓存
a)存放的查询条件(即OID),真实的实体在类级别的二级缓存中
3.Query(查询)级别的二级缓存
a) 存放的查询条件(即OID),真实的实体在类级别的二级缓存中
4.更新时间戳级别的二级缓存
a) * * 当程序执行新增、修改、删除的时候,会在时间戳缓存区域产生一个时间 T2
b) * 目的是为了保证二级缓存中的数据时最新的数据
c) * 当T1<T2,说明此时更新在后,查询在前,此时二级缓存中存放的不是最新的数据,要想保证二级缓存中仍然存放的是最新的数据,那么就要再次查询数据库,从而获取到最新的数据
d) 当T1>T2,说明此时更新在前,查询在后,此时二级缓存中存放的是最新的数据,那么如果再次获取二级缓存中的数据的时候,不用再查询数据库,获取的是新的数据
1.缓存中存放的数据
a) 适合放入二级缓存的数据
i. 很少被修改
ii. 不是很重要的数据,允许出现偶尔的并发
b) 不适合放入二级缓存的数据
i. 经常被修改的数据
ii. 财务数据,绝对不允许出现并发问题
iii. 与其应用数据共享的数据
2.开启缓存不用所有的查询都通过数据库了(提高了查询效率),且二极缓存基于进程,只要服务器不关,所有访问者都可以使用该缓存
相关文章推荐
- hibernate一级与二级缓存的理解
- 说说自己对hibernate一级、二级、查询、缓存的理解。
- hibernate二级缓存个人理解勿喷
- Hibernate3一级缓存和二级缓存的理解【转】
- Hibernate3一级缓存和二级缓存的理解!
- 说说自己对hibernate一级、二级、查询、缓存的理解。
- 对hibernate的二级缓存的理解
- 对于hibernate的一级缓存和二级缓存理解
- Hibernate一级、二级缓存以及查询缓存的理解
- Hibernate 二级缓存初步理解
- hibernate进二阶之理解二级缓存
- 理解hibernate的session缓存机制(一级缓存和二级缓存)
- Hibernate3一级缓存和二级缓存的理解!
- hibernate:真正理解二级缓存和查询缓存
- Hibernate的二级缓存
- hibernate一级缓存和二级缓存的区别
- 对于Hibernate二级缓存和查询缓存的总结
- Hibernate的二级缓存
- Hibernate的二级缓存 下
- Hibernate二级缓存