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缓存详解 #### 一、Hibernate映射 **Hibernate映射**是Hibernate框架的核心功能之一,它实现了Java对象与数据库表之间的映射关系。通过这种方式,开发人员可以使用面向...
在Spring与MyBatis整合的情况下,使用session缓存的情况相对较少,主要原因是Spring管理的事务机制与MyBatis的缓存机制存在一定的冲突。这里我们将深入探讨这个问题,并分析为何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方法中定义的...
标题中的“Memcached分布式缓存服务替换Session解决方案”是指一种使用Memcached作为分布式缓存来管理Web应用中的Session状态的方法,以替代传统的基于服务器端Session存储的策略。这种方案主要针对的是多服务器环境...
该资源的主要讲解了session的主要用法,工作原理,安全机制,单点登录,在大型web中的应用。主要为对session不甚了解的同志,价值含量较高,也较为实用。
SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 ...
Web协议详解与抓包实战
在.NET C#开发环境中,`Session` 是一种用于存储客户端会话状态的关键技术。它允许开发者在用户浏览器会话期间保持特定数据,这对于处理用户登录、防止重复登录以及统计在线用户数等场景非常有用。本解决方案的核心...
Session缓存** - **一级缓存**: Session 的一级缓存是由其实现类 `SessionImpl` 中的 `persistenceContext` 属性所包含的一系列 Java 集合构成。这些集合用来存储通过 Session 加载的对象。当应用程序通过 Session...
第一级缓存是 Session 缓存,它是默认开启的,每个 Hibernate Session 对象都有一个与之关联的第一级缓存。当我们在 Session 中进行 CRUD(创建、读取、更新、删除)操作时,数据会自动被缓存起来,提高了数据访问的...
一级缓存是Hibernate内置的Session缓存,它是每个Session实例独享的。当我们在Session中对对象进行操作时,如保存、更新或删除,Hibernate首先会检查这个对象是否已经在一级缓存中。如果在,那么直接在内存中处理,...
一级缓存,也称为Session缓存,是每个Hibernate Session实例私有的。当Session执行查询操作时,会将结果存储在一级缓存中。如果同一Session再次执行相同的查询,Hibernate将直接从一级缓存获取数据,避免了重复的...
一级缓存是 Hibernate 内置的 Session 缓存,它是每个 Hibernate Session 的私有缓存。当对象被加载到 Session 中时,它们会被自动缓存。在同一个 Session 内部,对相同数据库记录的操作会直接在缓存中进行,无需...
Hibernate的缓存机制分为两层:第一级缓存(Session缓存)和第二级缓存(SessionFactory缓存)。这两种缓存分别服务于不同的应用场景和目的。 ##### 1. 第一级缓存(Session缓存) - **定义**:第一级缓存是在`...
会话管理, 由memached管理session, 解决会话内容缓存技术。
#### 四、清除Session缓存 Session是另一种用于跟踪用户会话状态的技术,它通常存储在服务器端。当需要清除Session时,可以通过调用`invalidate()`方法来实现: ##### 代码示例: ```jsp session.invalidate(); %...
一级缓存,也称为session缓存,是每个Hibernate Session内部管理的一个内存结构。在本篇文章中,我们将深入探讨一级缓存的工作原理、作用以及如何有效地利用它。 ### 一级缓存的工作机制 1. **对象持久化过程**:...