hibernate中一级缓存和二级缓存
一级与二级缓存的作用:一级缓存是Session级别的,也就是说在一个事务中才会启作用。比如在一个事务中同时查询同一个对象,则不会两次去数据库中查询。
而二级缓存是sessionFactory级别的,不同的事务之间是可以共享的,有些权限,当用户首次登陆后便将关联的权限放到二级缓存中,这样每次需要权限时就无需再查询数据库了。
最后再说明为什么这样设计:一般情况下,我们查询的数据一般是实时的,使用二级缓存肯定不行,使用一级缓存既利用了缓存又不会影响实时。
使用二级缓存是为了存储一些比较稳定的数据,如权限,只有在用户修改了权限且重新登录时才能生效。
一级缓存:Session级别的缓存
当Session被open时,缓存即被open
当Session被close时,缓存即被close
在缓存open到close这段时间,多次加载同一个持久化对象,只有第一次向数据库发送SQL语句加载,之后的加载都是基于缓存的
不过Session从打开到关闭的时间很短暂,一般在项目中都是在业务方法开始时打开Session,调用结束后即关闭Session,在如此短暂的瞬间时刻内,多次加载同一个对象的可能性不大,换言之,一级缓存的可用之处也并不大
二级缓存:SessionFactory级别的缓存
跟Session同理,level2 cache会随着sessionFactory的打开而打开,关闭而关闭。
但是在一般的应用程序中,sessionfactory会以单例的形式存在,所以在整个应用程序的生命周期里,sessionfactory会一直存在。既二级缓存也一直存在直到关闭应用程序。
本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1665116
Hibernate的一级缓存 缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取.
一级缓存,二级缓存 一级缓存: 是在SqlSession事务中产生缓存机制 缓存查询中的数据、select、还可以对参数不同进行缓存机制 commit或者rollback就会清楚缓存 clearCache() 清除缓存 update,insert,delete 缓存都会清理,重新积累 缓存的目的: 降低数据库的访问量,数据库压力不会那么大。
相关文章
- JavaWeb_(Hibernate框架)Hibernate中一级缓存
- JavaWeb_(Hibernate框架)Hibernate配置文件hibernate.cfg.xml
- MyEclipse把普通的项目变成hibernate项目
- Hibernate中使用Criteria查询及注解——(hibernate.cfg.xml)
- Hibernate中使用Criteria查询及注解——(hibernate.cfg.xml)
- Hibernate中使用Criteria查询及注解——(hibernate.cfg.xml)
- Hibernate关联关系配置(一对多、一对一和多对多)
- Hibernate缓存机制
- hibernate 02之helloworld
- 为eclipse离线安装hibernate tools插件
- hibernate 各种主键生成策略(转)
- 【HIBERNATE框架开发之六】HIBERNATE中ANNOTATION的关系映射&&组件映射!
- Hibernate关联映射-数据对象三种关系
- Hibernate学习--hibernate延迟加载原理-动态代理(阿里电面)
- paip. 提升性能---hibernate的缓存使用 总结
- paip. 提升性能---hibernate的缓存使用 总结
- Hibernate的fetch
- Hibernate之一级缓存和二级缓存
- Hibernate缓存
- Hibernate每个子类一张表(使用XML文件)实例