Hibernate——缓存+如何配置二级缓存
2015-12-15 11:28
204 查看
一、什么是缓存
一般来说,我们每次访问的数据是从数据库中查出来的,但是会有这样的情况,多个用户会对一张表进行反复的访问和操作,这样每次都去从数据库中查询相同的数据,很大程度上降低了效率,为了避免这种情况发生,出现了缓存,缓存就是把以前从数据库查询出来和使用过的对象保存在内存中,这个数据结构通常是类似HashMap,当以后使用某个对象的时候,先查询缓存中是或否有这个对象,如果有则使用缓存中的对象,如果没有,则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用。二、一级缓存和二级缓存
一般来说,我们将从数据库取出的数据存储到session中,每个session,对同一个id进行两次load,不会发送给sql数据库,但是session关闭的时候,一级缓存就失效了。二级缓就是全局缓存。缓存可以简单看出一个map,通过key在缓存里找value。
引用代码,分析cache的实现原理
<span style="font-family:KaiTi_GB2312;font-size:18px;">Dao { hashmap map = new map(); User getUser(integer id) { User user = map.get(id) if(user == null) { user = session.get(id); map.put(id,user); } return user; } } Dao { Cache cache = null setCache(Cache cache) { this.cache = cache } User getUser(int id) { if(cache!=null) { User user = cache.get(id); if(user ==null) { user = session.get(id); cache.put(id,user); } return user; } return session.get(id); } } </span>
相关文章推荐
- 运行Delphi 2007 IDE提示无法打开"EditorLineEnds.ttr"文件
- Python继承与多继承
- 安装CocoaPods
- 修改状态栏的颜色
- wampserver自定义网站根目录
- int型变量拷到字节数组中的顺序
- Hive与HBase的区别
- zabbix使用过程中遇到的问题与解决方法(3)
- php提交post和get的几种方式
- Android Studio使用自定义的Android.mk文件编译第三方so库
- 为什么要学习elua?
- Git技巧:右键菜单怎么去除?
- EasyUi的DataGrid组件扩展,统计当前页信息
- 问题:oracle 计算年龄;结果:oracle中根据生日计算年龄的问题
- Kinect for Windows SDK开发入门(十五):进阶指引 下
- vmware 下找不到ifcfg-eth0的问题
- SurfaceView在线视频播放
- jQuery css-dom
- jQuery中Ajax应用
- 如何训练deep architectures