首页 > Web开发 > 详细

hibernate的一级缓存问题

时间:2017-01-14 20:11:51      阅读:278      评论:0      收藏:0      [点我收藏+]

1.证明一级缓存的问题

          技术分享

 

    输出结果:

               技术分享

 

               只发出一条查询语句  第二条查询语句没有执行

                 因为第一条查询语句缓存的存在

 

 2.

                 移除缓存:

            技术分享

           

              输出结果:

                         技术分享

 3.一级缓存的快照

                       就是对一级缓存的数据备份

                      保证数据库的数据与 一级缓存的数据必须一致。

                      如果一级缓存修改了,在执行commit提交时,将自动刷新一级缓存,执行update语句,将一级缓存的数据更新到数据库。  

技术分享

4.   refresh 刷新

l  refresh 保证 一级缓存的数据 与 数据库的数据 保持一致。将执行select语句查询数据库,将一级缓存中的数据覆盖掉。只要执行refresh都将执行select语句。

 

 技术分享

输出结果:

技术分享

         刷新一次 就会执行一次select语句为了缓存中的数据与数据库中的数据保持一致

4.1   快照演示(一级缓存刷新)

技术分享

 

技术分享

 

                     问题:一级缓存什么时候刷新?(了解)

                               默认情况提交(commit())刷新。

User u = (User) session.get(User.class,"1");
System.out.println(u);
//修改持久态对象内容(一级缓存内容)--默认在commit时,将触发update语句。
u.setUsername("rose1");
System.out.println(u);

输出结果:

Hibernate:
select
user0_.id as id0_0_,
user0_.username as username0_0_,
user0_.password as password0_0_
from
t_user user0_
where
user0_.id=?
User [id=1, username=rose, password=1234]
User [id=1, username=rose1, password=1234]
Hibernate:
update
t_user
set
username=?,
password=?
where
id=?

 

hibernate的一级缓存问题

原文:http://www.cnblogs.com/fjkgrbk/p/hibernate_catch.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!