理解Session的缓存
当Session的save()方法持久化一个Customer对象是,Customer对象被加入到Session的缓存中,以后即使应用程序中的引用变量不再引用Customer对象,只要Session的缓存还没有被清空,Customer对象仍然处于生命周期中。
当Session的load()方法试图从数据库中加载一个Customer对象时,Session先判断缓存中是否已经存在这个Customer对象,如果存在,就不需要再到数据库中检索。
调用了Session的某个方法,例如save()方法就纳入到缓存里面。那个Session就会存在一个引用去指向这个对象,这时候这个对象就不会被收集器所收掉。当Session被关闭掉之后,某个引用就不再指向他了,那么这个对象可能给垃圾回收机制所回收。
Session的缓存作用
减少访问数据库的频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据的速度快多了,因此Session的缓存可以提高数据访问的性能。
保证缓存中的对象与数据库中的相关记录保存同步。当缓存中持久化对象的状态发生了变化,Session并不会立即执行相关的sql语句,这使得Session能够把几条相关的sql语句合并为一条sql语句,以便减少访问数据库的次数,从而提高应用程序的性能。
Session清理缓存
清理缓存是指按照缓存中对象的状态的变化来同步更新数据库。
当Session执行事物的提交的时候就会自动执行update语句(commit()),使得内存中对象与数据库中的记录信息一致,使得更新能几时提交到数据库中。
清理缓存的时间点
Session在下面的时间点清理缓存:
—当应用程序调用org.hibernate.Transaction的commit()方法的时候,commit()方法先清理缓存,然后在向数据库提交事物。
—当应用程序显式调用Session的flush()方法的时候。
Hibernate的二级缓存结构
Hibernate提供了两级缓存,第一级缓存是Session的缓存。由于Session对象的生命周期通常对应一个数据库事物或者一个应用事物,因此它的缓存是事物范围的缓存。第一级缓存是必须的,不允许而且事实上也无法被卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
第二级缓存是一个可插拔的缓存插件,他由SessionFactory负责管理。由于SessionFactory对象的生命周期和应用程序的整个进程对应,因此第二级缓存是进程范围的缓存。这个缓存中存放的是对象的散装数据。第二级缓存是可选的,可以在每个类或每人集合的粒度上配置第二级缓存。
分享到:
相关推荐
个人理解,仅供参考 1 安装包下载 nginx-0.8.51下载 tomcat-6.0.20下载 pcre-8.12下载 2 环境描述 window7下运行的centos5.4的Vmware7虚拟机 nginx-0.8.51 tomcat-6.0.20 pcre-8.12 jdk-6u7-linux-i586 3 ...
尽管缓存管理在Windows应用...在ASP.NET中,我们会遇到像Session,Application以及Cache这些对象,为了有效地在web应用中有效地使用它们,理解他们之间的不同对我们来说非常重要。 背景 在这篇文章中,我将谈到在ASP.NE
Magento-中文开发教程, ...如何使用和设置Cookie&Session Magento中我的账户访问权限判断 Magento时间/时区问题 重新安装 Magento 模块 Magnto获取当前店铺和店铺配置的方法 Magento如何重写或新建后台的页面
Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线...理解Session的缓存 在Hibernate应用中Java对象的状态 Session的保存、更新、删除、查询方法:
这个是本人自己研究总结的实例+源码,还有实例总结+注释说明(源码),里面有自己研究过的总结话语,可以帮助大家更好的学习和理解,希望对大家有所帮助!
包含网络分层模型、TCP和HTTP的关系、HTTP数据包构成、头行信息的定义、数据传输类型、缓存和资源校验、Cookie和Session、各种非常有意义的Header、Nginx使用和代理、缓存配置、HTTPS服务的意义和使用、HTTP2的定义...
8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 ...
8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 ...
8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 ...
8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 ...
理解Microsoft专家认证程序 理解Microsoft认证的不同等级和类型 选择成为MCP(Microsft认证专家)的考试科目 选择成为MCSD的考试科目 选择成为MCT的考试科目 MCSE认证考试的科目 选择合适的MCSE课程组合 核心课程考试 ...
8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 8.2.2 脏检查及清理缓存的机制 184 8.3 Java对象在Hibernate 持久化层的状态 187 8.3.1 临时对象的特征 188 8.3.2 持久化对象的特征 189 8.3.3 被...
8.2 理解Session的缓存 181 8.2.1 Session的缓存的作用 182 8.2.2 脏检查及清理缓存的机制 184 8.3 Java对象在Hibernate 持久化层的状态 187 8.3.1 临时对象的特征 188 8.3.2 持久化对象的特征 189 8.3.3 被...
13.4.2 理解高速缓存区域 13.4.3 设置本地的高速缓存提供程序 13.4.4 设置重复的高速缓存 13.4.5 控制二级高速缓存 13.5 小结 第14章 利用HQL和JPA QL查询 14.1 创建和运行查询 ...
Laravel努力剔除开发过程中的痛苦,因此我们提供了验证(authentication)、路由(routing)、session和缓存(caching)等开发过程中经常用到的工具或功能。Laravel的目标是给开发者创造一个愉快的开发过程,并且不...
redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级.doc RPC (Remote Procedure Call)即远程过程调用.doc Spring 面试问题 TOP 50(干货推荐收藏必备).doc springboot常见面试题.doc svn和git的区别及适用场景...
* 理解了吗? * 所以这里替换了一下,使用根目录开始的URI */ String uri = httpRequest.getRequestURI();//获取URI String basePath = httpRequest.getContextPath();//获取basePath if(null != uri && uri....
11.4.4 理解SQL缓存通知 11.4.5 缓存通知的工作方式 11.4.6 启用通知 11.4.7 创建缓存依赖 11.5 自定义缓存依赖 11.5.1 基本的自定义缓存依赖 11.5.2 使用消息队列的自定义缓存依赖 11.6 异步页面 ...