session.flush()与session.clear()的区别

session.flush()和session.clear()就针对session的一级缓存的处理。

简单的说,

1 session.flush()的作用就是将session的缓存中的数据与数据库同步。

2 session.clear()的作用就是清除session中的缓存数据(不管缓存与数据库的同步)。

执行完session.flush()时,并不意味着数据就肯定持久化到数据库中的,因为事务控制着数据库,如果事务提交失败了,缓存中的数据还是照样会被回滚的。

flush本意是冲刷,这个方法大概取自它引申义冲马桶的意思,马桶有个池子,你往里面扔东西,会暂时保存在池子里,只有你放水冲下去,东西才会进入下水道。

同理很多流都有一个这样的池子,专业术语叫缓冲区,当你print或者write的时候,会暂时保存在缓冲区,并没有发送出去,这是出于效率考虑的,因为数据不会自己发送过去,必须有其他机制,而且这个很消耗资源,就像马桶你需要很多水,才能冲走,你如果扔一点东西,就冲一次水,那你水费要爆表了,同样如果你写一行文字,或者一个字节,就要马上发送出去,那网络流量,CPU使用率等等都要爆表了,所以一般只有在你真正需要发送否则无法继续的时候,调用flush,将数据发送出去。

http://blog.csdn.net/leidengyan/article/details/7514484

session.flush()和session.clear()就针对session的一级缓存的处理。

时间: 2024-10-26 20:33:28

session.flush()与session.clear()的区别的相关文章

Hibernate session.flush() 使用

session flush在commit之前默认都会执行, 也可以手动执行,他主要做了两件事: 1) 清理缓存. 2) 执行SQL. flush: Session 按照缓存中对象属性变化来同步更新数据库. 默认情况下,Session 会在以下情况下调用 flush: 1. 直接调用 session.flush. 2. 当应用调用Transaction.commit() 时, 会先调用 flush, 然后再向数据路提交. 3. 在做查询时(HQL, Criteria),如果缓存中持久化对象的属性发

16 session 和cookie的特点 和区别 以及三大域对象的比较

1.cooie和session特点 1. Cookie特点: cookie是将数据保存在浏览器端,是一门浏览器端的技术.由于数据保存在浏览器端,所以可以被任意的查看,安全性较低,但是可以长时间存储数据.cookie善于存储安全性要求较低,但是存储时间较长的数据. 2. Session特点: session是将数据保存在服务器端,是一门服务器端的技术,数据保存在服务器端相对安全,但是服务器无法保留大量session对象,所以不能够长时间存储数据.服务器善于存储安全性要求较高,但是存储时间较短的数据

hibernate session.save()和session.persist()的区别

save()需要返回一个Serialzable的实现类,因此执行这个方法时会马上插入到数据库 而persist()不会立即插入到数据库. "当我们封装一个长会话流程的时候,persist()方法就显得尤为重要了!" 记录下来,防止自己再一次忘记 hibernate session.save()和session.persist()的区别,码迷,mamicode.com

null id in entry (don't flush the Session after an exception occurs) 解决方法

最近在学习基于ssh的注解的系统,然后在实现往数据库增加记录时可以增加第一个,第二个就报错,在网上查了很多资料,大多都是 该异常信息是在提示我们没有为数据中的非空字段设置值. 然后就一直没有明白 明明都赋值了 为什么还会这样 ,然后我把unique字段和非空字段去掉即//@Column(name = "zh", unique = true, nullable = false)就好了. null id in entry (don't flush the Session after an

session.load()和session.get()的区别

Session.load/get方 法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象. 其区别在于: 如果未能发现 符合条件的记录,get方法返回null, 而load方 法会抛出一个ObjectNotFoundException. Hibernate的工作原理: 一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装, 使得java程序员可以使用对象编程思维来操纵数据库. 工作流程: 1.读 取并解析配置文件 2.读取并解析映射信息,创建Session

SESSION和cookie的使用和区别

PHP中SESSION和cookie的使用和区别 cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制. PHP在http协议的头信息里发送cookie, 因此 setcookie() 函数必须在其它信息被输出到浏览器前调用,这和对 header() 函数的限制类似. 1.1 设置cookie: 可以用 setcookie() 或 setrawcookie() 函数来设置 cookie.也可以通过向客户端直接发送http头来设置. 1.1.1 使用setcookie()函数设置

org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Session after a

1.错误描述 org.hibernate.AssertionFailure: null id in com.you.model.User entry (don't flush the Session after an exception occurs) at org.hibernate.event.internal.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:77) at org.hib

null id in entry (don't flush the Session after an exception occurs)

null id in entry (don't flush the Session after an exception occurs) 遇到这个异常实属不小心所致,最初看到异出的错误信息时我误认为是主键为空所致.一着急竟然把entry当成了entity理解,真是让人笑话^_^. 其实个该异常信息是在提示我们没有为数据中的非空字段设置值.呵呵!看,够笨的吧.怎么会忘记为非空字段设置值呢?当然一般我们是不会犯这样的错.但是需要说的一点是,在数据的设计中比如SqlServer,我们为某个非空字段设置

SESSION和COOKIE的作用和区别,SESSION信息的存储方式,如何进行遍历?

二者的定义:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来.当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你. Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cooki