Hibernate之刷新点与同步点

69 篇文章 2 订阅
60 篇文章 0 订阅

Hibernate之刷新点与同步点

刷新与刷新点

刷新:对session缓存数据的刷新,也就是对堆内存数据的更新
刷新点:就是执行刷新操作的时间点,也就是当程序中出现了Update或者delete操作时,Hibernate不会执行相应的SQL语句,而是要等到了刷新点才执行

同步与同步点

**同步:就是将session数据同步到数据库
同步点:执行同同步操作的时间点**

session的同步点只有一个——事务的提交
session中数据的改变不会立即与数据库同步,而是要在执行commit操作后再同步

session的刷新点主要有三个
1)、执行Query查询
2)、session.fulsh()操作
3)、执行事务的提交

看看过程

测试代码

public void test(){
        //获取session 对象
        Session session = HbnUtils.getSession();
        //开启事务
        session.beginTransaction();
        try {
            //获取一个对象
            Student student = session.get(Student.class, 1);
            //执行delete操作
            session.delete(student);
            //制造一个刷新点
            session.createQuery("from Student").list();
            //提交事务
            //session.getTransaction().commit();
        } catch (Exception e) {
            //回滚事务
            session.getTransaction().rollback();
            e.printStackTrace();
        }
    }

在get方法处设置一个断点
这里写图片描述
可以看到,执行完delete操作后,Hibernate并没有立刻执行相应的SQL语句,继续下一步
这里写图片描述

可以看到再到达刷新点时,delete才得以执行,继续执行完程序

查看数据库发现数据并没有改变(因为commit被注释了),也就是数据并没有同步到数据中
这里写图片描述

需要注意的是:并不是所有操作到了刷新点都会执行相应的SQL语句,当执行的是update操作时,到了刷新点是否执行Update SQL语句取决于当前数据与快照数据是否一致,如果不一致,就会执行Update语句,如果一致即使是到了刷新点也不会执行Update语句

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值