springMVC3.0+hibernate3.0缓存问题

a56508820 2013-06-28 05:54:47
请问一下,我使用springMVC3.0+hibernate3.0框架,现在使用JS做一个仿照QQ农场的应用,农场的状态是查询数据库数据,并根据当前时间来改变农场植物状态并更新到数据库中。现在的问题就是,改变了农场状态,更新到数据库中后,我对页面进行刷新,农场的状态有可能会恢复到没更新之前的状态,再刷新又可能是出现更新后的状态。我试过在debug状态对其内存进行查看,在读数据库时,读到的数据有可能跟数据库数据不一样,但是只要我重启tomcat服务器后,怎么刷新读到的数据也会跟数据库的数据一样。初步怀疑是hibernate缓存问题,但是hibernate配置中是没有使用二级缓存的,hibernate配置如下:
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/examfarm?useUnicode=true&characterEncoding=UTF-8</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.format_sql">false</property>
<property name="hibernate.use_sql_comments">false</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.cache.use_second_level_cache">flase</property>
<property name="hibernate.cache.use_query_cache">flase</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>

mysql缓存配置如下:
+------------------------------+----------------------+
| Variable_name | Value |
+------------------------------+----------------------+
| binlog_cache_size | 32768 |
| binlog_stmt_cache_size | 32768 |
| have_query_cache | YES |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| metadata_locks_cache_size | 1024 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| stored_program_cache | 256 |
| table_definition_cache | 400 |
| table_open_cache | 256 |
| thread_cache_size | 8 |
+------------------------------+----------------------+

现在不知道是哪个缓存问题导致这个结果,请各位大侠帮我分析一下,谢谢
...全文
252 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a56508820 2013-07-07
  • 打赏
  • 举报
回复
已经解决了,我在使用hibernate获得实体时加上LockMode.UPGRADE就可以了
a56508820 2013-07-06
  • 打赏
  • 举报
回复
没有其他连接,我在本地上测试一直出现这个问题,后台管理也会出现这个问题,就是我如果直接用mysql客户端修改数据,管理页面要刷新多遍才能得到更新后的数据
a56508820 2013-06-29
  • 打赏
  • 举报
回复
求各位帮我看一下吧
wolfofshaolin 2013-06-29
  • 打赏
  • 举报
回复
是不是有其他连接在操作数据库, 你session范围就查询不到更新数据了。
a56508820 2013-06-28
  • 打赏
  • 举报
回复
你好,但是我在hibernate里面没有配置二级缓存,也没有使用ehcache,因为我的应用更新操作是很多的,我也不想使用缓存,不知道是怎么取消这个缓存问题
小丑哥_V5 2013-06-28
  • 打赏
  • 举报
回复
建议在业务层缓存数据,使用ehcache比较不错呢...可以参考下我的博客的项目实例

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧