为什么用flush()

DAO层有一个方法.内容是getHibernateTemplate().update(userInfo);
有的时候可以更新,有的时候不能更新,需要flush().
这是为什么?

 

回答1.

这跟线程有关系,应该是spring使用是ThreadLocal ,一个线程对应一个session,可能是你在同个线程下多次调用 了update,update操作的是游离状态,而出问题的情况下应该是你的session里面已经有一个持久态的userInfo,而更新持久态是要用flush

回答2.

那你就要去了解一下hibernate的缓存机制了。第一次你查询的时候,他是从数据库里查询,当你第二次一样查询的时候他就不会去查数据库了,而是直接从缓存中拿数据了。

所以flush()就是刷新缓存……

猜你喜欢

转载自lly-515-163-com.iteye.com/blog/1152285
今日推荐