Hibernate commit与flush

本文详细解释了Hibernate中flush和commit的区别及应用场景。flush用于清理缓存并将更改提交到数据库,但不会提交事务;commit则会先调用flush,然后提交事务,确保数据永久保存。文章还探讨了flush在防止SQL语句冲突中的作用。
/**
     * 
     * https://blog.youkuaiyun.com/zmx729618/article/details/51455051
     * 
     * flush()            执行一系列的sql,但不会提交事务
     * comit()            先调用flush()方法,然后提交事务. 提交事务意味着对数据库所做的更新会永久保持下来 .
     * 
     * flush()            清理缓存,将Hibernate的缓存提交到数据库,如果数据库处在一个事务中,这些sql将会被储存起来。
     * commit()           数据会永久的保存下来,真正的被持久化。
     * 
     * flush() 针对缓存,commit() 针对事务,数据同步到数据库只要没有commit,还是可以rollback的
     * 
     * 
     * 当commit提交之后,才会执行相应的insert代码,而commit又是隐性的调用flush的,那在commit之前调用flush的作用的什么?
     * 我的理解是防止多条SQL语句冲突,这是因为flush到数据库中执行SQL语句的顺序不是按照你代码的先后顺序,而是按照insert,update....delete的顺序执行的,如果你不按照这个顺序在代码中编写,
     * 如果逻辑一旦出错就会抛exception了,解决这个的办法之一就是在可能其冲突的SQL操作后面flush一下,防止后面的语句其冲突
     */

 

转载于:https://www.cnblogs.com/lxh520/p/9009993.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值