黑马程序员技术交流社区
标题:
缓存的问题
[打印本页]
作者:
高海燕
时间:
2011-8-7 21:18
标题:
缓存的问题
在hibernate框架中提到一级缓存和二级缓存,请问什么是一级缓存和二级缓存,什么时候用哪个缓存?
作者:
匿名
时间:
2011-8-8 02:10
牛人啊,我javaweb都还没开始学呢
作者:
冯龙辉
时间:
2011-8-8 07:05
标题:
回复 楼主 的帖子
Hibernate的一级缓存:Session的缓存和SessionFactory的内置缓存
Hibernate的二级缓存:SessionFactory的外置缓存
Session缓存中存放的是数据库中数据的拷贝,在DB中表现为关系数据形式,而在Session缓存中表现为互相关联的对象。在读写DB时,Session会负责这两种数据形式的映射。具体原理与作用在下一篇文字中详述。
SessionFactory的内置缓存与Session的缓存类似,SessionFactory的内置缓存中存放了映射元素数据和预定义的SQL语句,预定义SQL是在Hibernate初始化阶段根据映射数据推导出来的
SessionFactory的外置缓存这个没有试过,不太熟。
[
本帖最后由 fenglh 于 2011-08-08 07:07 编辑
]
作者:
许鹏
时间:
2011-8-8 19:13
标题:
回答
1.缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.
2.缓存的范围
Hibernate的一级缓存和二级缓存都位于均位于持久层,且均用于存放数据库数据的副本,最大的区别就是缓存的范围各不一样.
缓存的范围分为3类:
1.事务范围
事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依赖于事务的生命周期,只有当事务结束时,缓存的生命周期才会结束.事务范围的缓存使用内存作为存储介质,一级缓存就属于事务范围.
2.应用范围
应用程序的缓存可以被应用范围内的所有事务共享访问.缓存的生命周期依赖于应用的生命周期,只有当应用结束时,缓存的生命周期才会结束.应用范围的缓存可以使用内存或硬盘作为存储介质,二级缓存就属于应用范围.
3.集群范围
在集群环境中,缓存被一个机器或多个机器的进程共享,缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致,缓存中的数据通常采用对象的松散数据形式.
[
本帖最后由 xpbtmusic 于 2011-08-08 19:14 编辑
]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2