Hibernate向我们提供的主要的操纵数据库的接口,Session就是其中的一个,它提供了基本的增,删,改,查方法.而且具有一个缓存机制,能够按照某个时间点,按照缓存中的持久化对象属性的变化来更新数据库,着就是Session的缓存清理过程.
Session缓存的作用
[1]减少DB访问频率。应用程序从内存中读取持久化对象的速度显然比到数据库中查询数据要快得多了,所以Session的缓存可以提高数据访问性能。
[2]保证缓存中对象与DB数据同步。位于缓存中的对象被称为持久化对象,当患粗重之久化对象的状态发生了变换,Session并不会立即执行相关SQL语句,这使得Session能够把几条相关的SQL居于合并为一条SQL语句,以便较少DB访问次数,提高效率。
[3]当缓存中的持久化对象之间存在循环关联关系是,Session会保证不出现访问对象图的死循环,以及由死循环引起的JVM堆栈溢出异常。
在Hibernate中对象分为三个状态,临时,持久化,游离.对象的临时状态:
1.刚用new创建对象的时候,它还没有被持久化,这个时候是临时状态.
2.对象的持久化状态:已经被加入到Session的缓存中,通常所说的持久化对象就是只一个对象在这个状态的时候.
3.对象的游离状态:已经被持久化,但是不属于Session的缓存的时候是游离状态.
Session有两个方法,一个commit()事务提交方法,还有flush()刷新缓存方法,都有着清理缓存的作用,flush()进行缓存的清理,执行一系列的SQL语句,但不会提交事务.而commit()方法会先调用flush()方法,然后在提交事务.
详解区别:
commit针对事物的
flush针对缓存的,flush() 其实是放到缓存当中
同步到数据库中后只要没有commit还是可以rollback的
分享到:
相关推荐
hibernate的_映射、三态、脏数据、Session缓存,一个高手的总结,个人觉得很厉害,和大家一起分享
因为一直用spring整合了mybatis,所以很少用到mybatis的session缓存。什么原因呢?下面小编给大家介绍spring 整合mybatis后用不上session缓存的原因分析,需要的朋友可以参考下
Nginx+tomcat7+java1.7+memcached进行共享session缓存必须的一些jar包,支持nginx和memcached任意版本,但tomcat仅限7.X版本,Java的JDK版本最好用1.7的。
Session缓存与Cache缓存的区别,可以参考如下的几点: 1、最大的区别是Cache提供缓存依赖来更新数据,而Session只能依靠定义的缓存时间来判断缓存数据是否有效。 2、即使应用程序终止,只要Cache.Add方法中定义的...
Memcahed分布式缓存服务替换Session解决方案,解决session复制问题,已在本地实现。
该资源的主要讲解了session的主要用法,工作原理,安全机制,单点登录,在大型web中的应用。主要为对session不甚了解的同志,价值含量较高,也较为实用。
SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 ...
Web协议详解与抓包实战
会话管理, 由memached管理session, 解决会话内容缓存技术。
今天小编就为大家分享一篇django框架用户权限中的session缓存到redis中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
首先session是有一级缓存的,目的是为了...3.session.refresh():会强制发送select语句,以使session缓存中对象的状态和数据表中对应的记录保持一致。该方法的有效性需要配置事务的隔离级别为read commited(读已提交)。
cookie和session缓存技术的思维导图,结构清晰,便于初学者阅读
当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级...
spring springmvc mybatis shiro 以及 ehcache(配合shiro实现缓存验证 配合spring实现二级缓存) 测试 二级缓存 访问http://localhost:8080/vkblog/test/ehcacheuserlist.action 测试 访问限制 访问任意的action
合并session的写操作,一个request里的多次session操作,只会写一次缓存; 支持Tomcat,netty等Web服务器,理论上j2ee的Web服务器都支持; 支持标准的session api,可以和其它组件无缝对接; 注意事项 假定是类似...
一级缓存也就是Session缓存随着Session的关闭而消亡.二级缓存伴随着整个应用,也是就是伴随着SessionFactory消亡而消亡. Hibernate的缓存机构图如下: 三 Hibernate中的第二级缓存 ...
web项目开发过程中经常遇到用户登陆,退出的问题,根据登陆和退出来操作session的存值和销毁....但往往很多用户不去点击"退出",而是关闭FF的tab或浏览器(多种浏览器),这就给session的销毁带来了困难.