- 浏览: 159959 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (130)
- Database (5)
- JavaSE (23)
- JavaScript (11)
- Struts2 (15)
- Hibernate (11)
- Spring (16)
- Linux (4)
- Jquery (3)
- Tools (12)
- Jsp (7)
- 杂谈 (9)
- WEB Project (10)
- WebService (16)
- maven (2)
- android (1)
- memcache (2)
- 网络通信 (4)
- solr (1)
- cxf (7)
- powerdesigner (1)
- jxls (1)
- springmvc (1)
- nosql (1)
- node.js (0)
- thrift (0)
- REST (1)
- tag (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过滤器的配置,配置过滤器的时候配置
<filter>
<filter-name>openSession</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter>
3 AUTO
设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库4 COMMIT
提交事务或者session.flush()时,刷新数据库;查询不刷新
5 ALWAYS
每次进行查询、提交事务、session.flush()的时候都会刷数据库
这里需要说一下和AUTO的区别,当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。
已经废弃了,被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过滤器的配置,配置过滤器的时候配置
<filter>
<filter-name>openSession</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter>
3 AUTO
设置成auto之后,当程序进行查询、提交事务或者调用session.flush()的时候,都会使缓存和数据库进行同步,也就是刷新数据库4 COMMIT
提交事务或者session.flush()时,刷新数据库;查询不刷新
5 ALWAYS
每次进行查询、提交事务、session.flush()的时候都会刷数据库
这里需要说一下和AUTO的区别,当hibernate缓存中的对象被改动之后,会被标记为脏数据(即与数据库不同步了)。当session设置为FlushMode.AUTO时,hibernate在进行查询的时候会判断缓存中的数据是否为脏数据,是则刷数据库,不是则不刷,而always是直接刷新,不进行任何判断。很显然auto比always要高效得多。
发表评论
-
spring之BeanFactoryAware接口
2014-01-16 10:47 642要直接在自己的代码中读取spring的bean,我们除了根据常 ... -
classpath:xxx.xml 与 classpath*:xxx.xml的区别
2012-12-14 14:45 780在使用开源框架如spring、struts2等经常需要配 ... -
最新SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
2012-12-14 14:19 701一 开发环境 1、动态web工程 2、部分依赖 ... -
spring AOP 教程
2012-03-26 11:35 746URL http://wenku.baidu.com/vi ... -
servlet 中获得spring Bean 的方法
2011-12-01 10:58 1135只需要servlet 中的servletCo ... -
spring 3 中使用注解的方式来进行任务调度。
2011-07-13 12:14 1131以上内容基于Spring 3.0.5 ... -
Struts2+spring注解配置简介
2011-07-13 10:08 923如题。。。。 -
spring mail 实例
2010-12-06 11:35 1172啥也不说了,见附件: 发送ftl模板实例: pr ... -
spring中autowire的用法
2010-12-06 10:37 1623原文链接:http://blog.sina.com.cn/s/ ... -
Flush() Spring/Hibernate
2010-05-20 11:00 950当service更新修改数据,执行flush() ... -
spring 5中事务配置方法<链接>
2010-03-16 09:13 892http://www.iteye.com/topic/6154 ... -
struts2.1+hibernate 3.2+spring 2.5 整合
2010-03-10 12:39 2003在MyEclipse中新建一个项目,基于j2ee5,按以下步骤 ... -
spring配置详解《转》
2010-01-28 10:27 921原文:::http://www.iteye.com/topic ... -
spring jar包详解<转>
2010-01-28 09:37 692spring.jar是包含有完整发布的单个jar包,sprin ... -
Struts与Spring集成测试--转贴
2010-01-20 10:11 1661最近在学习Struts2,进行测试驱动开发,对于struts2 ...
相关推荐
Struts2、Spring和Hibernate是Java开发中的三大框架,它们的集成能够构建出强大的企业级应用。在这个配置说明中,开发者使用的是Struts2.3、Spring3.1.2和Hibernate4.1.6的版本。 首先,我们需要了解这三大框架的...
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 ...
### Struts1.x、Spring2.x、Hibernate3.x 和 DWR2.x 整合知识点解析 #### 一、Struts1.x与Spring2.x的整合 **1.1 在web.xml中进行Struts和Spring的配置** 为了实现Struts1.x与Spring2.x的无缝集成,首先需要在...
Spring MVC Hibernate Demo Hibernate 配置 数据库实体必须设置以下注解 @Entity @Id 自增主键必须设置以下注解,否则报错 @GeneratedValue(strategy = GenerationType.IDENTITY) 在更新或删除数据时,必须调用...
在使用Spring框架时,特别是在与Hibernate结合的情况下,可能会遇到“Write operations are not allowed in read-only mode (FlushMode.NEVER)”这样的异常。这个问题通常发生在使用Spring提供的Open Session In ...
- Spring框架集成:Spring提供了对Hibernate的支持,简化了配置和事务管理。 - JPA集成:Hibernate作为JPA的实现,可以使用JPA规范进行开发。 总结,Hibernate API 是Java开发者处理数据库的强大工具,它简化了...
在Java Web开发中,SSH(Struts2、Spring和Hibernate)是一个常见的集成框架,用于构建高效、可扩展的Web应用程序。SSH整合涉及三个核心组件:Struts2负责控制层,Spring处理业务逻辑和依赖注入,而Hibernate则管理...
在使用Hibernate进行对象持久化时,经常遇到的一个问题是关于懒加载(lazy loading)的处理。懒加载是一种优化技术,允许在真正需要某个关联对象的数据时才加载它们,而不是一开始就加载所有相关联的数据。这种策略...
在基于Spring和Hibernate的项目开发中,Criteria API提供了灵活且强大的查询功能,使开发者能够轻松构建复杂的查询条件,从而提高数据检索的效率与精确度。本文将深入探讨Hibernate中Criteria API的全面应用,包括其...
- **设置Session冲刷模式**:通过`setFlushMode(FlushMode mode)`设置Session冲刷模式。 - **设置数据库锁模式**:使用`setLockMode(LockMode mode)`设置数据库锁模式。 #### 五、小结 通过上述介绍,我们可以看出...