设为首页 加入收藏

TOP

Hibernate不能实时获取MySQL中更新
2014-11-23 21:26:39 来源: 作者: 【 】 浏览:16
Tags:Hibernate 不能 实时 获取 MySQL 更新

Hibernate禁止了一级、二级、查询缓存还是不能实时获取直接在MySQL中更新的记录的原因。


最近项目中用到了Hibernate,由于mysql数据库中的数据除了我的webservice应用会修改,还有另外一方的后台管理程序会修改,所有每次查询就需要实时的从mysql数据库中获取最新的数据。可是原以为是个很简单的事情,把二级和查询缓存都禁掉,每次sessionFactory.openSession()后用完就close掉(相当于也没有一级缓存)。可是当我应用程序中的hibernate第一次读取数据后,再直接在mysql控制台中修改那些记录中的数据,然后再次用hibernate执行同样的查询,虽然确确实实发出了sql查询语句,可是查询回来的数据还是更新之前的数据,断点调试也找不出原因。


最后再网上找到原因说是


Hibernate使用它自己默认的连接池,而它默认的连接池是很有问题的(具体什么问题不清楚!),使用c3p0连接池就正常了,在hibernate.cfg.xml配置文件里增加:



name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider>



5
30
1800
50


需要下载 c3p0-0.9.1.jar 包,然后从hibernate源码中的hibernate.cfg.xml把关于c3p0连接池使用的相关的属性去掉并做相应的修改即可。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Hibernate数据修改后不能及时更新 下一篇Hibernate 不能实时获取数据库中..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: