我的理解:flush()清理的是缓存中的语句,如执行一系列SQL语句,这是已经在缓存中中存在的。
而commit()方法提交的是一个事务,在执行这个事务前要先清理缓存中的语句。也就是说:flush()清理的是先前在缓存中还未处理完的语句;commit()提交的是当前的一个事务。"p148 所谓清理"这个清理有没特指哪个清理?
而commit()方法提交的是一个事务,在执行这个事务前要先清理缓存中的语句。也就是说:flush()清理的是先前在缓存中还未处理完的语句;commit()提交的是当前的一个事务。"p148 所谓清理"这个清理有没特指哪个清理?
解决方案 »
- 关于String 传址传值?
- java中用Ganymed实现SCP 和SFTP文件传输
- ibatis如何操作oracle的大字段blob和clob?
- IE浏览器问题?Who can help me ?
- 现今学编程哪个方向更好一些呢
- applicationResource.properties应用的问题
- 那位达人简单的介绍一下struts,spring和hibernate这三个东东
- sean_gao(大胃) ,把剩下的翻译出来啊!
- ***散分求助***如何实现从实体bean查询结果返回为一张表格
- servlet文件下载中服务器端的编码
- 如何查找本地接口localhome?
- 初学者问题:EJB的LocalHome接口与Home接口有什么不同它们分别有什么作用.
否则就会到commit后再执行
比如有一个POJO叫user,现在将这个对象的name属性改变了,这时Hibernate
并不会立即对数据库进行操作,你可以继续对这个对象进行其它的操作;但如果此时你使用了Session.flush(),那么Hibernate就会将这个改变更新到数据库中。由flush引发的数据库更新操作是可以RollBack的,但一旦执行了Transaction的commit,则无法再RollBack了。Hibernate在返回一个POJO时,会另外自己“备份”一个,以便于在执行更新操作时能够通过Java的“动态代理”知道哪些字段被修改了哪些没有被修改。但这并不是什么缓存。
??