flush和reflush

/**
     * jpa 中的reflush 同 hibernate 中 Session 的 refresh 方法. 
     * 
     * reflush 会强制发送sql查询(select)语句,使缓存中的数据和数据库中的数据保持一致,数据由数据库到缓存
     * flush 会强制发送sql更新(update)语句,使数据库中的数据和缓存中的数据保持一致,数据由缓存到数据库
     * 
     * 注意:当对缓存中的数据进行一系列操作后,一般提交事务时,会调用flush方法,把数据库更新一下
     *      但在commit或flush之前调用reflush,那么缓存中的数据又变成了和数据中的数据一样的了,你原先修改的数据白费了
     */
    @Test
    public void testRefresh(){
        Customer customer = entityManager.find(Customer.class, 1);
//      customer = entityManager.find(Customer.class, 1);
        customer.setAge(1);
//      entityManager.flush();
        System.out.println("-->"+customer);
        entityManager.refresh(customer);
        System.out.println("---->"+customer);
    }
    
    /**
     * jpa中的flush 同 hibernate 中 Session 的 flush 方法. 
     * 默认情况下,在提交事务的时候会刷新缓存(即调用flush方法)
     * 
     * 手动调用,会立刻强制发送sql更新(update)语句,使数据库中的数据和缓存中的数据保持一致
     * 但数据库中的记录还没有变,因为还没有提交事务
     * 
     */
    @Test
    public void testFlush(){
        Customer customer = entityManager.find(Customer.class, 1);
        System.out.println(customer);
        
        customer.setLastName("1113");
        System.out.println("----");
        entityManager.flush();
        
        System.out.println("----11");
    }

 

转载于:https://www.cnblogs.com/wwzyy/p/5896209.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值