Hibernate缓存问题(Problem with Hibernate Cache)

Chad

2009329

 

问题描述如下,

情景1:

系统运行中,在外部通过工具修改数据库数据后,系统当一直无法得到最新数据。

情景2:

       App1hibernate来做数据存取,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

 

虽然找到办法,但对该办法到底产生了什么作用还是不太了解。于是查看Hibernatecode。看看这些属性到底在哪里发挥了作用。结果,找来找去,该属性竟然没有被用到hibernate的缓存配置当中。最后,发现,它其实是用到了java.sql.Connection当中去。Hibernate在查询过程当中,用到了java.sql.PreparedStatement, 对于这个类,我们通过试验可以发现,如果你把connectionauto commit设置为false时,用同一个connection在数据更改前和理性后取都是一样的。只有把auto commit设置为true或用两个事务来取值,才能取回来不同的数据。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值