hibernate刷新数据时的缓存问题
2017-03-29 10:42
162 查看
今天碰见了一个BUG,两个系统同使用一个数据库,两个系统都采用的SSH框架,其中一个系统更新了数据库后,另一个系统得5分钟后才能取得更新的数据,肿么回事呢?
仔细查了查,原来是hibernate缓存的问题,众所周知,hibernate是采取二级缓存的策略,第一是session级别的缓存,二是sessionfactory级别的缓存,并且默认二级缓存是打开的。(使用缓存需设置配置hibernate.cache.use_query_cache=true)读取数据的时候,Hibernate将第一次读取的内容放到了缓存中,若此时有别的应用修改了数据库中的数据,程序再次读取的时候,内容是从缓存中直接获取,先从一级缓存中读,若没有则从二级缓存中读取,则读取的数据为过时的数据。
采取的应对措施为:
这样数据库更新后hibernate缓存就会实时更新
原文地址:http://blog.csdn.net/rogerjava/article/details/8513565
仔细查了查,原来是hibernate缓存的问题,众所周知,hibernate是采取二级缓存的策略,第一是session级别的缓存,二是sessionfactory级别的缓存,并且默认二级缓存是打开的。(使用缓存需设置配置hibernate.cache.use_query_cache=true)读取数据的时候,Hibernate将第一次读取的内容放到了缓存中,若此时有别的应用修改了数据库中的数据,程序再次读取的时候,内容是从缓存中直接获取,先从一级缓存中读,若没有则从二级缓存中读取,则读取的数据为过时的数据。
采取的应对措施为:
1.session.clear(),先清除一级缓存 2.createSQLQuery创建的SQLQuery对象query中设置query.setCacheMode(CacheMode.IGNORE); 设置成CacheMode.IGNORE模式,在读取数据的时候,不和二级缓存交换数据,直接读取数据库。
这样数据库更新后hibernate缓存就会实时更新
原文地址:http://blog.csdn.net/rogerjava/article/details/8513565
相关文章推荐
- hibernate刷新数据时的缓存问题
- hibernate刷新数据时的缓存问题
- hibernate刷新数据时的缓存问题
- 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题
- 在Asp.net 2.0 中禁用页面缓存解决页面刷新(重新加载数据)的问题!
- window.showModalDialog方式/模式窗口数据不刷新(缓存)问题
- window.showModalDialog方式/模式窗口数据不刷新(缓存)问题
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- 页面嵌套 Iframe 产生缓存导致页面数据不刷新问题
- 在Asp.net 2.0 中禁用页面缓存解决页面刷新(重新加载数据)的问题!
- window.showModalDialog方式/模式窗口数据不刷新(缓存)问题/模式窗口中,链接弹出新窗口问题/无提示关闭页面的方法
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- IE9下Ajax无法刷新数据的缓存问题解决方法
- 页面嵌套 Iframe 产生缓存导致页面数据不刷新问题
- IE9下Ajax无法刷新数据的缓存问题解决方法
- ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
- window.showModalDialog方式/模式窗口数据不刷新(缓存)问题
- 小记--关于页面缓存,刷新页面不会获取最新数据问题
- 在Asp.net 2.0 中禁用页面缓存解决页面刷新(重新加载数据)的问题
- cin流的状态和缓存刷新问题