hibernate数据不同步

hailun 2008-12-02 09:38:26
选择一条数据进行更新操作,数据库可以更新成功,但页面上显示的有时候与数据库一致,有时候不一致,不知道什么原因
查资料是缓存原因,但不知道要怎么改呢,我每个增删改查都有在自己的事务内处理,每次操作完都会关SESSION的
...全文
79 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hailun 2008-12-03
  • 打赏
  • 举报
回复
谢谢楼上
似乎是明白了
Landor2004 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hailun 的回复:]
引用 6 楼 Landor2004 的回复:
引用 4 楼 hailun 的回复:
哦,如果不显示的调用flush()方法,close()方法的时候不是会先调用flush()方法的吗?然后再去 close()的吗

flush会在事务提交的时候被自动调用,其他的时候就没那么智能了


对呀,那既然是提交的时候会自动调用,那么我们就不用显示的调用了啊,但如果是这样,那还要这个flush方法有什么用呢
[/Quote]
有两种情况,在hibernate中配置autocommit
autocommit=true 说明允许自动提交,但是在调用save等方法后,也不会同步到数据库,必须再调用flush方法
autocommit=false 说明必须显示的提交事务,这时即使调用了flush方法,也不会同步到数据库,必须commit
hailun 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Landor2004 的回复:]
引用 4 楼 hailun 的回复:
哦,如果不显示的调用flush()方法,close()方法的时候不是会先调用flush()方法的吗?然后再去 close()的吗

flush会在事务提交的时候被自动调用,其他的时候就没那么智能了
[/Quote]

对呀,那既然是提交的时候会自动调用,那么我们就不用显示的调用了啊,但如果是这样,那还要这个flush方法有什么用呢
duhongltz 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hailun 的回复:]
不知道为什么,我在增删改查的每个自己的事务里最后都有关闭session
有问题的情况是,用load方法,没有关闭session

改掉后,用get 方法 ,关闭session测试了几次好像问题解决了


不知道是什么原因
[/Quote]
load 得到的是代理对象 get得到的是实体对象
Landor2004 2008-12-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hailun 的回复:]
哦,如果不显示的调用flush()方法,close()方法的时候不是会先调用flush()方法的吗?然后再去 close()的吗
[/Quote]
flush会在事务提交的时候被自动调用,其他的时候就没那么智能了
shenjie1989 2008-12-02
  • 打赏
  • 举报
回复
当你出去的时候,是先关卧室门还是先关大门呢????????呵呵
hailun 2008-12-02
  • 打赏
  • 举报
回复
哦,如果不显示的调用flush()方法,close()方法的时候不是会先调用flush()方法的吗?然后再去 close()的吗
然月枕流君 2008-12-02
  • 打赏
  • 举报
回复
具体问题可能是懒加载的问题引起的,
修复方法,
可以更改成立即加载;
或者
session.flush();
session.close();
关闭前flush(),他是刷新缓存,并且能够强制缓存与数据库同步更新;
hailun 2008-12-02
  • 打赏
  • 举报
回复
不知道为什么,我在增删改查的每个自己的事务里最后都有关闭session
有问题的情况是,用load方法,没有关闭session

改掉后,用get 方法 ,关闭session测试了几次好像问题解决了


不知道是什么原因
Landor2004 2008-12-02
  • 打赏
  • 举报
回复
session在关闭之前的get或者load操作会产生不一致情况,因为会读取一级缓存
而如果是list,那不会出现不一致(除非你设置了二级缓存)

看你的代码是怎么写的了。强制刷出数据,可以用session.refesh(),但是不推荐这样

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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