Hibernate session FlushMode的种属性
2012-07-18 19:12
302 查看
Hibernate session FlushMode有五种属性:
1、NEVEL:已经废弃了,被MANUAL取代了
2 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;
解决办法:配置事务,spring会读取事务中的各种配置来覆盖hibernate的session中的FlushMode;
3 AUTO
设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库
4 COMMIT
提交事务或者session.flush()时,刷新数据库;查询不刷新
5 ALWAYS:
每次进行查询、提交事务、session.flush()的时候都会刷数据库
ALWAYS和AUTO的区别:当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当 session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。
原文地址:http://www.blogjava.net/landor2004/archive/2009/11/25/303701.html
1、NEVEL:已经废弃了,被MANUAL取代了
2 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;
解决办法:配置事务,spring会读取事务中的各种配置来覆盖hibernate的session中的FlushMode;
3 AUTO
设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库
4 COMMIT
提交事务或者session.flush()时,刷新数据库;查询不刷新
5 ALWAYS:
每次进行查询、提交事务、session.flush()的时候都会刷数据库
ALWAYS和AUTO的区别:当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当 session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。
原文地址:http://www.blogjava.net/landor2004/archive/2009/11/25/303701.html
相关文章推荐
- Hibernate session FlushMode有五种属性
- Hibernate session FlushMode有五种属性
- Hibernate session FlushMode的五种设置
- java.lang.NoSuchMethodError: org.hibernate.Session.getFlushMode()Lorg/hibernate/FlushMode;
- Hibernate session FlushMode的五种设置
- [hibernate]Turn your Session into FlushMode.COMMIT/AUTO,请教这种配置怎么处理
- Hibernate session FlushMode的五种设置
- hibernate - (FlushMode.NEVER/MANUAL): Turn your Session into
- Hibernate session FlushMode
- hibernate4 session.flush()的作用
- hibernate--session的CRUD方法, delete, load,get,update,saveorupdate, clear, flush
- Hibernate的session.flush做了什么呢?
- Hibernate的session.flush做了什么呢?
- Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definitio
- Hibernate的session.flush做了什么呢?
- spring和hibernate整合时异常(详解): getFlushMode is not valid without active transaction
- 09hibernate_session_flush
- JPA的FlushModeType与Hibernate的FlushMode
- 论hibernate中的session.flush()和transaction.commit()的差异
- (详解)Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session