Hibernate缓存问题(Problem with Hibernate Cache)
2009-03-29 20:17
369 查看
Chad
2009年3月29日
问题描述如下,
情景1:
系统运行中,在外部通过工具修改数据库数据后,系统当一直无法得到最新数据。
情景2:
App1用hibernate来做数据存取,App2直接操作数据库,App2对数据库数据操作的结果,无法在App1在得到。
试图用以下方法解决,都告失败:
1. 重新生成一个Session实例. Failed!
2. 关于query cache, second-level cache. Failed!
3. Session.flush, Session.clear都不好用. Failed!
接着找到几种方法可行:
1. 每次重新生成sessionfactory。<糟糕至极>
2. 把查询放到transaction当中。<理论上不通>
3. 设置hibernate的配置属性:connection.autocommit=true
虽然找到办法,但对该办法到底产生了什么作用还是不太了解。于是查看Hibernate的code。看看这些属性到底在哪里发挥了作用。结果,找来找去,该属性竟然没有被用到hibernate的缓存配置当中。最后,发现,它其实是用到了java.sql.Connection当中去。Hibernate在查询过程当中,用到了java.sql.PreparedStatement, 对于这个类,我们通过试验可以发现,如果你把connection的auto commit设置为false时,用同一个connection在数据更改前和理性后取都是一样的。只有把auto commit设置为true或用两个事务来取值,才能取回来不同的数据。
2009年3月29日
问题描述如下,
情景1:
系统运行中,在外部通过工具修改数据库数据后,系统当一直无法得到最新数据。
情景2:
App1用hibernate来做数据存取,App2直接操作数据库,App2对数据库数据操作的结果,无法在App1在得到。
试图用以下方法解决,都告失败:
1. 重新生成一个Session实例. Failed!
2. 关于query cache, second-level cache. Failed!
3. Session.flush, Session.clear都不好用. Failed!
接着找到几种方法可行:
1. 每次重新生成sessionfactory。<糟糕至极>
2. 把查询放到transaction当中。<理论上不通>
3. 设置hibernate的配置属性:connection.autocommit=true
虽然找到办法,但对该办法到底产生了什么作用还是不太了解。于是查看Hibernate的code。看看这些属性到底在哪里发挥了作用。结果,找来找去,该属性竟然没有被用到hibernate的缓存配置当中。最后,发现,它其实是用到了java.sql.Connection当中去。Hibernate在查询过程当中,用到了java.sql.PreparedStatement, 对于这个类,我们通过试验可以发现,如果你把connection的auto commit设置为false时,用同一个connection在数据更改前和理性后取都是一样的。只有把auto commit设置为true或用两个事务来取值,才能取回来不同的数据。
相关文章推荐
- 详解hibernate的cache缓存问题
- hibernate中cache二级缓存问题
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- 缓存简介--Cache In Hibernate: @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
- spring+hibernate+Jboss treeCache配置二级缓存(一)
- IE6下背景图片不缓存问题或者document.execCommand("BackgroundImageCache",false,true)
- hibernate3与ehcache-2.8.3配合使用,在多个SessionFactory实例的情况下出现“Another unnamed CacheManager already exists in the same VM”问题
- hibernate 缓存问题
- POJ3468 A Simple Problem with Integers(数状数组||区间修改的RMQ问题)
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- Hibernate使用二级缓存时,createSQLQuery需要注意的问题
- jQuery ajax cache缓存问题
- Hibernate大批量的数据更新缓存问题(Could not synchronize database state with session)
- Hibernate中的缓存机制与可能遇到的问题
- Hibernate缓存之Aop+cache
- ubuntu12.04 无法更新,老是提示系统出问题,更新缓存失败E:Encountered a section with no Package: header....
- a problem occurred with this webpage so it was reloaded问题研究
- 深入剖析hibernate的N+1问题和缓存问题帖子1
- Hibernate缓存问题
- 收集:Hibernate中常见问题 No row with the given identifier exists问题的原因及解决