日期:2014-05-19  浏览次数:20633 次

关于手动修改数据库页面无法实时刷新数据的问题
昨天遇到一个问题,就是我手动改了数据库中的数据,但是我前台页面刷新的时候,不能实现数据的实时更新,还是数据库中原来修改的数据,我想应该是跟事务有关的,因为手动修改数据库的话,没有经过事务的处理,而从前台实现数据库更新的话,是经过事务处理的,不知道我这样理解对不对?希望大神帮忙分析下是什么原因,如果我要实现手动修改数据库,页面实时刷新的话,要怎么修改呢?用的是SSH+JPA+GlassFish服务器,先谢谢大家啦!

------解决方案--------------------
hibernate是采取二级缓存的策略,第一是session级别的缓存,二是sessionfactory级别的缓存,并且默认二级缓存是打开的。读取数据的时候,Hibernate将第一次读取的内容放到了缓存中,若此时有别的应用修改了数据库中的数据,程序再次读取的时候,内容是从缓存中直接获取,先从一级缓存中读,若没有则从二级缓存中读取,则读取的数据为过时的数据。
所以你手动的去修改数据库里面的数据,而没有改动到缓存里面的数据,此时缓存存在此条数据,所以不会去读取你数据库里面的数据。
------解决方案--------------------
1楼分析到位,学习了