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)
<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" />