FlushMode属性
来源:互联网 发布:讲课视频软件 小学 编辑:程序博客网 时间:2024/05/22 03:03
参见hibernate的api说明https://www.hibernate.org/hib_docs/v3/api/org/hibernate/FlushMode.html说明
FlushMode有五种属性
1 NEVEL 已经废弃了,被MANUAL取代了
2 MANUAL spring3.x中的opensessioninviewfilter已经将默认的FlushMode设置为MANUAL了; 如果FlushMode是MANUAL或NEVEL,在操作过程中hibernate会将事务设置为readonly,所以在增加、删除或修改操作过程中会出现如下错误org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition; 解决办法网上有很多;1 配置事务,spring会读取事务中的各种配置来覆盖hibernate的session中的FlushMode;2 先编程式修改FlushMode,比如session.setFlushMode(FlushMode.AUTO); 这样hibernate就会自动去除readonly限制;3 直接修改opensessioninviewfilter过滤器的配置,配置过滤器的时候配置openSessionorg.springframework.orm.hibernate3.support.OpenSessionInViewFilterflushModeAUTO
3 AUTO设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库
4 COMMIT提交事务或者session.flush()时,刷新数据库;查询不刷新
5 ALWAYS每次进行查询、提交事务、session.flush()的时候都会刷数据库 这里需要说一下和AUTO的区别,当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。
- FlushMode属性
- FlushMode属性
- FlushMode
- FlushMode
- flushMode
- spring 事务 FlushMode属性的理解
- hibernate session设置清理缓存的时间点(FlushMode属性的区别)
- hibernate flushmode
- OpensessionInView的FlushMode问题
- OpenSessionInViewFilter FlushMode.COMMIT 问题
- Hibernate的FlushMode
- Hibernate session FlushMode浅析
- Hibernate session FlushMode
- 了解Hibernate的FlushMode.NEVER
- SSH FlushMode 错误解决记录
- 了解Hibernate的FlushMode.NEVER模式
- 了解Hibernate的FlushMode.NEVER模式
- (FlushMode.NEVER/MANUAL): Turn your Session into
- 《乔布斯传.神一样的传奇》读后感
- linux下svn客户端安装及环境配置
- cloudstack 开发软件包缺失问题及解决方法
- 外国人发短信时常用的英文缩写
- Spring Integeration学习
- FlushMode属性
- DBA创建表空间,并赋权
- WIN开始→运行→输入的命令集锦
- Windows mobile模拟器上网的配置步骤
- mysql 常见错误
- PHP依赖管理工具Composer入门
- 虚函数
- C++调用C#生成的DLL实现及注意事项
- .NET Framework 4.0 .NET Framework 3.5