JPA的FlushModeType与Hibernate的FlushMode
2013-04-14 22:11
162 查看
Hibernate session FlushMode有五种属性:
1、NEVEL:已经废弃了,被MANUAL取代了
2 MANUAL:
如果FlushMode是MANUAL或NEVEL,在操作过程中hibernate会将事务设置为readonly,所以在Spring与Hibernate集成后进行增加、删除或修改操作过程中会出现如下错误
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要高效得多。
JPA的FlushModeType只有两种:
1、COMMIT:仅当提交事务时才能进行刷新
2、AUTO:(默认)在执行查询时进行刷新
1、NEVEL:已经废弃了,被MANUAL取代了
2 MANUAL:
如果FlushMode是MANUAL或NEVEL,在操作过程中hibernate会将事务设置为readonly,所以在Spring与Hibernate集成后进行增加、删除或修改操作过程中会出现如下错误
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要高效得多。
JPA的FlushModeType只有两种:
1、COMMIT:仅当提交事务时才能进行刷新
2、AUTO:(默认)在执行查询时进行刷新
相关文章推荐
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 日期注解
- hibernate jpa 注解 @Temporal(TemporalType.DATE)
- hibernate setflushmode
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- Hibernate的FlushMode与session.flush()
- Hibernate JPA注解 @Temporal(TemporalType.DATE) 日期注解!
- 时间格式注解:@Temporal(TemporalType.XXXX)时间格式化hibernate jpa注解
- 01-hibernate jpa 注解 @Temporal(TemporalType.DATE) 日期注解
- 谈论Hibernate级联删除——JPA根据Hibernate实现许多级联删除CascadeType.DELETE_ORPHAN
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- hibernate - (FlushMode.NEVER/MANUAL): Turn your Session into
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 日期注解
- getHibernateFlushMode is not valid without active transaction;
- spring和hibernate整合时异常(详解): getFlushMode is not valid without active transaction
- Hibernate session FlushMode的种属性
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- 报错原因 (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker fr
- Hibernate session FlushMode
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值