1.证明一级缓存的问题
输出结果:
只发出一条查询语句 第二条查询语句没有执行
因为第一条查询语句缓存的存在
2.
移除缓存:
输出结果:
3.一级缓存的快照
就是对一级缓存的数据备份
保证数据库的数据与 一级缓存的数据必须一致。
如果一级缓存修改了,在执行commit提交时,将自动刷新一级缓存,执行update语句,将一级缓存的数据更新到数据库。
4. refresh 刷新
l refresh 保证 一级缓存的数据 与 数据库的数据 保持一致。将执行select语句查询数据库,将一级缓存中的数据覆盖掉。只要执行refresh都将执行select语句。
输出结果:
刷新一次 就会执行一次select语句为了缓存中的数据与数据库中的数据保持一致
4.1 快照演示(一级缓存刷新)
问题:一级缓存什么时候刷新?(了解)
默认情况提交(commit())刷新。
User u = (User) session.get(User.class,"1"); |
输出结果:
Hibernate: |