A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高海燕 黑马帝   /  2011-8-7 21:18  /  1920 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

在hibernate框架中提到一级缓存和二级缓存,请问什么是一级缓存和二级缓存,什么时候用哪个缓存?

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 这个要学了hibernite的学长来回答。

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-8-8 02:10:43
沙发
牛人啊,我javaweb都还没开始学呢

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 加油!

查看全部评分

回复 使用道具 举报

回复 楼主 的帖子

Hibernate的一级缓存:Session的缓存和SessionFactory的内置缓存
Hibernate的二级缓存:SessionFactory的外置缓存
Session缓存中存放的是数据库中数据的拷贝,在DB中表现为关系数据形式,而在Session缓存中表现为互相关联的对象。在读写DB时,Session会负责这两种数据形式的映射。具体原理与作用在下一篇文字中详述。
SessionFactory的内置缓存与Session的缓存类似,SessionFactory的内置缓存中存放了映射元素数据和预定义的SQL语句,预定义SQL是在Hibernate初始化阶段根据映射数据推导出来的
SessionFactory的外置缓存这个没有试过,不太熟。
[ 本帖最后由 fenglh 于 2011-08-08  07:07 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报

回答

1.缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.
2.缓存的范围
Hibernate的一级缓存和二级缓存都位于均位于持久层,且均用于存放数据库数据的副本,最大的区别就是缓存的范围各不一样.
缓存的范围分为3类:


1.事务范围
事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依赖于事务的生命周期,只有当事务结束时,缓存的生命周期才会结束.事务范围的缓存使用内存作为存储介质,一级缓存就属于事务范围.


2.应用范围
应用程序的缓存可以被应用范围内的所有事务共享访问.缓存的生命周期依赖于应用的生命周期,只有当应用结束时,缓存的生命周期才会结束.应用范围的缓存可以使用内存或硬盘作为存储介质,二级缓存就属于应用范围.


3.集群范围
在集群环境中,缓存被一个机器或多个机器的进程共享,缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致,缓存中的数据通常采用对象的松散数据形式.




[ 本帖最后由 xpbtmusic 于 2011-08-08  19:14 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马