社区
Java EE
帖子详情
hibernate中一级缓存和二级缓存的具体区别是什么?
sustbeckham
2011-02-13 05:25:24
同题。
hibernate中一级缓存和二级缓存的具体区别是什么?在网上找不到满意的答案,发帖子讨论下。
...全文
8335
14
打赏
收藏
hibernate中一级缓存和二级缓存的具体区别是什么?
同题。 hibernate中一级缓存和二级缓存的具体区别是什么?在网上找不到满意的答案,发帖子讨论下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Lao_song
2012-10-08
打赏
举报
回复
是不是也太全面了一点吧!起码也要讲细一点咯
archy123
2012-02-21
打赏
举报
回复
换个角度给你说,CPU有内部的缓存就相当于一级缓存,内存就相当于二级缓存。
思灵月
2012-02-20
打赏
举报
回复
[Quote=引用 2 楼 psjcarlos 的回复:]
主要的不同是它们的作用范围不同。
一级缓存是session级别的。
也就是只有在同一个session里缓存才起作用。
而二级缓存是sessionFactory级别的。
其缓存对同一个sessionFactory生产出来的session都有效。
[/Quote]
太明了啦~~
ETCentury
2011-02-15
打赏
举报
回复
学些,有更清晰的认识了
jie2workce
2011-02-14
打赏
举报
回复
1.一级缓存是针对session级别的,当这个session关闭后这个缓存就不存在了。
2.二级缓存是SessionFactory级别的,二级缓存我们通常使用其他的一些开源组件,比如hibernate经常使用的就是ECache,这个缓存在整个应用服务器中都会有效的。
区别:两者的作用范围不同。
觉得还是去看书上说的。。
heardy
2011-02-14
打赏
举报
回复
一级缓存:Session级别的缓存
当Session被open时,缓存即被open
当Session被close时,缓存即被close
在缓存open到close这段时间,多次加载同一个持久化对象,只有第一次向数据库发送SQL语句加载,之后的加载都是基于缓存的
不过Session从打开到关闭的时间很短暂,一般在项目中都是在业务方法开始时打开Session,调用结束后即关闭Session,在如此短暂的瞬间时刻内,多次加载同一个对象的可能性不大,换言之,一级缓存的可用之处也并不大
二级缓存:SessionFactory级别的缓存
跟Session同理,level2 cache会随着sessionFactory的打开而打开,关闭而关闭。
但是在一般的应用程序中,sessionfactory会以单例的形式存在,所以在整个应用程序的生命周期里,sessionfactory会一直存在。既二级缓存也一直存在直到关闭应用程序。
二级缓存分为好几种,简单来讲就是类级别的缓存class-cache和查询缓存
query-cache.
前者是以id作为缓存的key。
后者是以查询条件作为缓存的key。
另外补充一点:在项目中,我们一般不太实用hibernate原生的缓存机制,原因是不好管理。更多时候,我们在业务层使用自己写的cache
zcl198715
2011-02-14
打赏
举报
回复
首先要明白缓存是干什么的,缓存就是要将一些经常使用的数据缓存到内存或者各种储存介质中,当再次使用时可以不用去数据库中查询,减少与数据库的交互,提高性能。
再说明一级与二级缓存的作用:一级缓存是Session级别的,也就是说在一个事务中才会启作用。比如在一个事务中同时查询同一个对象,则不会两次去数据库中查询。
而二级缓存是sessionFactory级别的,不同的事务之间是可以共享的,有些权限,当用户首次登陆后便将关联的权限放到二级缓存中,这样每次需要权限时就无需再查询数据库了。
最后再说明为什么这样设计:一般情况下,我们查询的数据一般是实时的,使用二级缓存肯定不行,使用一级缓存既利用了缓存又不会影响实时。
使用二级缓存是为了存储一些比较稳定的数据,如权限,只有在用户修改了权限且重新登录时才能生效。
sustbeckham
2011-02-14
打赏
举报
回复
这些我知道,想问的是,为什么要设计成这样 ,设计成session级别的和sessionfactory全局级别的?
qingyuan18
2011-02-14
打赏
举报
回复
一级缓存:O-R映射的数据库实体对象
二级缓存:echache,放你自己定义的公参或者其他业务数据
xiaofancn
2011-02-14
打赏
举报
回复
缓存就是让数据停留在内存中的一种机制了,一级和二级就是缓存的时间和范围不一样。还可以适当的提高效率呢。
O溺水的鱼0
2011-02-13
打赏
举报
回复
1.一级缓存是针对session级别的,当这个session关闭后这个缓存就不存在了。
2.二级缓存是SessionFactory级别的,二级缓存我们通常使用其他的一些开源组件,比如hibernate经常使用的就是ECache,这个缓存在整个应用服务器中都会有效的。
区别:两者的作用范围不同。
lasthope
2011-02-13
打赏
举报
回复
同意2楼
psjcarlos
2011-02-13
打赏
举报
回复
主要的不同是它们的作用范围不同。
一级缓存是session级别的。
也就是只有在同一个session里缓存才起作用。
而二级缓存是sessionFactory级别的。
其缓存对同一个sessionFactory生产出来的session都有效。
opmic
2011-02-13
打赏
举报
回复
一级缓存为session级别的缓存
hibernate
一级
缓存
和二级
缓存
的
区别
与联系
hibernate
一级
缓存
和二级
缓存
的
区别
与联系
hibernate
的一级
缓存
和二级
缓存
hibernate
的一级
缓存
和二级
缓存
,
hibernate
的一级
缓存
和二级
缓存
,
hibernate
的一级
缓存
和二级
缓存
,
hibernate
的一级
缓存
和二级
缓存
,
hibernate
的一级
缓存
和二级
缓存
Hibernate
一级
缓存
和二级
缓存
的
区别
Hibernate
一级
缓存
和二级
缓存
的
区别
hibernate
一级和二级
缓存
配置与详解
主要讲解
hibernate
缓存
的配置和和使用方法,以及一级
缓存
和二级
缓存
的定义和
区别
,和查询
缓存
的使用
hibernate
一级
缓存
和二级
缓存
的
区别
用以介绍
hibernate
框架的
缓存
机制
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章