资讯专栏INFORMATION COLUMN

慕课网_《Hibernate缓存策略》学习总结

codergarden / 2451人阅读

摘要:时间年月日星期二说明本文部分内容均来自慕课网。返回对象不同返回持久化实体类对象返回代理对象。与缓存的关系不同只缓存,但不使用缓存查询缓存除外会使用缓存。

时间:2017年07月11日星期二
说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com
教学源码:无
学习源码:无

第一章:概述 1-1 概述

课程内容

了解缓存
掌握Hibernate一级缓存的使用
掌握Hibernate二级缓存的使用
Hibernate一二级缓存的对比和总结

什么是缓存?

并不是指计算机的内存或者CPU的一二级缓存
缓存是为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能的一种策略

为什么使用缓存?

ORM框架访问数据库的效率直接影响应用程序的运行速度,
    提升和优化ORM框架的执行效率至关重要
Hibernate的缓存是提升和优化Hibernate执行效率的重要手段,
    所以学会Hibernate缓存的使用和配置是优化的关键

缓存的一般工作原理

第二章:不使用缓存的问题 2-1 不使用缓存的问题

使用Hibernate查询数据时

第二次查询同一个对象时,并没有再次执行数据库查询
在不同的session中多次查询同一个对象时,会执行多次数据库查询
一级缓存中,持久化类的每个实例都具有唯一的OID
第三章:一级缓存介绍 3-1 一级缓存介绍

介绍Hibernate一级缓存

Hibernate一级缓存又称为“session缓存”、“会话级缓存”
通过Session从数据库查询实体时会把实体在内存中存储起来,
    下一次查询同一个实体时不再从数据库获取,而从内存中获取,这就是缓存
一级缓存的生命周期和Session相同;Session销毁,它也销毁
一级缓存中的数据可适用范围在当前会话之内

Hibernate一级缓存的API

一级缓存无法取消,用两个方法管理
evict():用于将某个对象从Session的一级缓存中清除
clear():用于将一级缓存中的所有对象全部清除
一级缓存也有些时候会对程序的性能产生影响

query.list()和query.iterate()区别

1.返回的类型不同:
list()返回List;iterate()返回Iterate。
2.查询策略不同:
list()直接发送sql语句,查询数据库;
iterate()发送sql语句,从数据库取出id,然后先从缓存中根据id查找对应信息,
有就返回结果,没有就根据id发送sql语句,查询数据库。
3.返回对象不同:
list()返回持久化实体类对象;
iterate()返回代理对象。
4.与缓存的关系不同:
list()只缓存,但不使用缓存(查询缓存除外);
iterate()会使用缓存。
第四章:二级缓存应用 4-1 二级缓存应用

提出问题,如何解决?

有些常用的数据,在一个session中缓存以后,我们希望在其它session中能够直接使用,而不用再次缓存怎么办?

使用更高级别的二级缓存,每个session共用的缓存

二级缓存的配置步骤

添加二级缓存对应的jar包
在hibernate的配置文件中添加Provider类的描述
添加二级缓存的属性配置文件
在需要被缓存的表所对应的映射文件中添加标签

标签的详细介绍

usage:指定缓存策略,可选的策略包括:transactional,read-write,nonstrict-read-write或read-only
include:指定是否缓存延迟加载的对象
region:指定二级缓存区域名,可以进行个性化定制缓存策略
第五章:对比及总结 5-1 一二级缓存对比及总结

二级缓存的介绍

二级缓存又称为“全局缓存”、“应用级缓存”
二级缓存中的数据可适用范围是当前应用的所有会话
二级缓存是可插拔式缓存,默认是EHCahe,
还支持其它二级缓存组件如:Hashtable、OSCache、SwarmCache、JBoss TreeCache等

在通常情况下会将具有以下特征的数据放入到二级缓存中

很少被修改的数据
不是很重要的数据,允许出现偶尔并发的数据
不会被并发访问的数据
参数数据

一二级缓存的对比

总结

Hibernate的缓存能提高检索效率
Hibernate的缓存分为一级缓存和二级缓存
一级缓存是会话级缓存,二级缓存是应用级缓存
Hibernate的缓存在提高检索的同时,也会增加服务器的消耗
所以要注意缓存的使用策略

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67372.html

相关文章

  • 课网_Hibernate初探之多对多映射》学习总结

    时间:2017年07月11日星期二说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:应用场景 1-1 多对多的应用场景 案例分析:企业项目开发过程中 一个项目可由多个员工参与开发 一个员工可同时参与开发多个项目 示意图 showImg(https://segmentfau...

    caozhijian 评论0 收藏0
  • 课网_《基于SSH实现员工管理系统之框架整合篇》学习总结

    时间:2017年08月16日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 课程介绍 课程目录 1.ssh知识点回顾 2.搭建ssm开发环境 3.struts2整合spring 4.spring整合hibernate 5.案例:使用ssh框架开发...

    icattlecoder 评论0 收藏0
  • 课网_《2小时学会SpringBoot》学习总结

    摘要:小时学会学习总结时间年月日星期六说明本文部分内容均来自慕课网。慕课网教学示例源码暂无。数据库操作下第六章事务管理事务管理只有查询的时候不加事务,其它任何操作都要加事务。第七章课程回顾课程回顾总结介绍安装配置的使用数据库操作 《2小时学会SpringBoot》学习总结 时间:2017年2月18日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示...

    aisuhua 评论0 收藏0
  • 课网_《新一代构建工具gradle》学习总结

    摘要:时间年月日星期二说明本文部分内容均来自慕课网。项目一个项目代表一个正在构建的组件比如一个文件,当构建启动后,会基于实例化一个类,并且能够通过变量使其隐式可用。任务动作定义了一个最小的工作单元。 时间:2017年05月16日星期二说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:无个人学习源码:https://github.com/zccod...

    antyiwei 评论0 收藏0
  • 课网_《Spring入门篇》学习总结

    摘要:入门篇学习总结时间年月日星期三说明本文部分内容均来自慕课网。主要的功能是日志记录,性能统计,安全控制,事务处理,异常处理等等。 《Spring入门篇》学习总结 时间:2017年1月18日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学示例源码:https://github.com/zccodere/s...个人学习源码:https://git...

    Ververica 评论0 收藏0

发表评论

0条评论

codergarden

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<