关于在SSH项目中使用OpenSessionInViewFilter过滤器后数据库数据不更新的问题
来源:互联网 发布:淘宝香水的货源 编辑:程序博客网 时间:2024/05/23 14:57
问题是在一个不经意间的时候发现的。话说这个项目是由好几个小伙伴一起分模块写的,代码同步采用SVN,框架使用的是SSH,数据库是MySQL。
问题是这样的,原本对于表格的所有操作(增加,删除,更新,查找)都是没有问题的,但是有一天更新过小伙伴的代码后,发现对于数据库的操作只有查找是可以的,其他的都不能直接了当的反映在数据库的数据中,但是对应方法返回的是true结果(举个例子:我对project表格新建一条数据,save方法返回true,说明方法确实执行了,并且新建成功,但是刷新数据库并没有出现该条数据记录)
下面是重要代码的展示:
web.xml
ProjectDAO.java
这里我的openSessionInViewFilter过滤器是写在struts2的过滤器之前的,DAO是采用hibernate的反向工程自动建的,这里通过浏览器请求action,通过action调用service,然后通过service调用dao实现数据库的操作。
openSessionInViewFilter的作用是控制session的连接,防止延迟加载的时候session已经关闭的异常。
起初我认为是事务没有提交,所以数据没有,但是页面上显示的true(dao中返回的结果),而且我在return true之前写过System.out.println(p.getId());后来测试这里是有输出的,并且就是数据库中新增的那个数据的ID。也通过注解@transitional试过,证实这里事务是被提交完成的。
后来我认为是openSessionInViewFilter监听的session与dao中的session不是同一个,但是后来发现是同一个的。
之后我尝试着把filter-mapping中的url-pattern改为其它值,比如/model/*,反正不监听dao,然后发现数据库里面有值了。
最后我看到flushMode这个属性,然后果断baidu了一下,发现数缓存的问题,大家请看flushMode说明:
默认NEVER
FlushMode.NEVER(MANUAL):
调用Session的查询方法时,不清理缓存
调用Session.commit()时,不清理缓存
调用Session.flush()时,清理缓存
FlushMode.AUTO:
调用Session的查询方法时,清理缓存
调用Session.commit()时,清理缓存
调用Session.flush()时,清理缓存
FlushMode.COMMIT:
调用Session的查询方法时,不清理缓存
调用Session.commit()时,清理缓存
调用Session.flush()时,清理缓存
因为dao中没有flush()的方法,所以在默认情况下,是不会清理缓存的。
这里在web.xml中加入这个属性的值就可以了,如图:
然后大家都懂的,所有的方法均能够马上在数据库中得到体现。
可能很多大神们都已经知道什么原因,觉得这个只是一个很简单的问题,但是我只想让碰到同样问题的小伙伴能够看到此片文章,然后帮助大家快快解决这个问题。
最后,谢谢大家!!~~
- 关于在SSH项目中使用OpenSessionInViewFilter过滤器后数据库数据不更新的问题
- 关于ssh javaweb 项目插入或者更新数据后 mysql 数据乱码的问题
- 项目中遇到关于OpenSessionInViewFilter的默认sessionFactoryBeanName的问题
- 异常处理:SSH整合中OpenSessionInViewFilter不生效问题的解决
- 关于android中sharedpreferences数据不更新的问题
- 也来说说关于Hibernate使用update更新数据时,不更新的问题
- 关于SSH项目中a标签提交action后执行两次的问题
- Tomcat重新发布项目后配置文件不更新的问题
- Thinkphp框架中使用数据对象自动处理添加数据库数据时,关于在数据库表中添加新列时出现新列的数据添加不上去?
- SVN更新结束后文件不包含在项目中,需要手动“包含在项目中”
- 关于编码过滤的问题,这里使用在web.xml中添加过滤器的方法!
- 关于listitem点击事件根据position取得数据库数据Onresume()更新Adapter后取得数据错误的问题
- 关于在eclipse中导入android support design包出错的问题【不定时更新】
- VX中解决在绑定数据后没有及时更新的问题
- 关于EF4.1更新数据后的显示问题-----PagedList
- 关于get请求数据不更新的问题
- 关于Adapter的notifyDataSetChanged()方法数据不更新问题解析
- 关于在执行hibernate3.0的save方法后数据无法添加到数据库的问题
- Json 解析的一个范例
- 常见Crash问题整理
- 黑马程序员_位操作、数组、排序、线程
- java语言的运行机制如何?
- #define dPS struct s * typedef struct s * tPS
- 关于在SSH项目中使用OpenSessionInViewFilter过滤器后数据库数据不更新的问题
- Uicc之IccFileHandler(原)
- 学生信息管理系统错误集锦(一)
- hdu 1272 并查集判断树的构成
- 另类乘法
- poj 1019
- 数字电路设计之循环右移的verilog实现
- hdu2492 数状数组或者线段树
- 初使JNI