首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

OpenSessionInViewFilter 配置有关问题

2012-10-18 
OpenSessionInViewFilter 配置问题关于OpenSessionInViewFilter有一篇详细文章,http://blog.csdn.net/west

OpenSessionInViewFilter 配置问题
关于OpenSessionInViewFilter有一篇详细文章,http://blog.csdn.net/westwindwing/archive/2007/01/23/1490802.aspx,正如文章中描述的一样,hibernate的session由spring来管理,每次在执行请求时,使用的是一个 session,可以使其延迟执行,缓冲数据,那么在高访问量和处理的时候,就无法快速的访问,这个时候需要将OpenSessionInViewFilter模式转换成"singleSession"="false",通过这个设置每次请求将创建一个session,用完后关闭。
下面是一个错误报告。

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.at org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1182)at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:692)at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:690)

由上面的错误可以看到,是由于配置执行用了readOnly,那么保存的时候就不能写操作。在applicationContext.xml中设置
<tx:method name="save*" propagation="REQUIRED"/><tx:method name="add*" propagation="REQUIRED"/><tx:method name="get*" read-only="true" propagation="REQUIRED" /><tx:method name="load*" read-only="true" propagation="REQUIRED" /><tx:method name="find*" read-only="true" propagation="REQUIRED" />

,保存是没有设置read-only="true",那么为什么不能写操作,这个确实比较迷茫,但是将"singleSession"="false",设成false后,就能执行写操作,这个还没有找到具体原因,暂且让其设置成false,待找到根源后,再做详细分析。

热点排行