hibernate对缓存操作的方法有以下三种:Flush(),Reflush(),clear();
One by One
Flush(),作用:强制使数据表中的数据和缓存中的数据保持一致(注意我说的是什么),Flush()方法会发送一条sql,但由于没有提交事务,所以数据库没有立即显示;
先假设数据库中有一条数据,我们获取后对该对象进行修改,当提交事务时看看会发生什么:
我们看起执行流程:
1:
执行flush()后会发送一条sql语句:
后提交事物:
注意:在提交事务或手动调用session.flush()方法之前,也有可能会进行flush()操作:
即执行HQL或QBC查询,会先进行frush操作以得到数据表中的最新记录。
reflush()方法的作用:强制使缓存中的对象和数据库中的对象保持一致(无论改没改一定会发送select语句)
当执行到断点是我们修改数据表中的信息让后再看结果:
为什么没有改呢?是因为数据库的隔离级别限制的原因,关于隔离级别的知识请大家到jdbc中学习;
好,我们现在修改一下数据库的隔离级别,可以直接在数据库中修改,也可以在hibernate中修改,我在hibernate中改的:
成功了吧!!!!