hibernate中的flush

本文介绍了Hibernate框架中Flush方法的功能及其实现原理。当使用UUID或assigned作为主键时,save操作并不会立即执行SQL语句,而是等到commit时才执行。通过调用session.flush()可以提前将数据同步到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

flush对我们来说并不陌生在I/O中,flush就有清理缓存将数据输出的功能。

在hibernate中flush用处颇大,它可以清理临时集合中的数据。比如uuid和assigned为主键的数据模型,在执行session.save()时不会向数据库发送sql语句,只有执行了commit()之后才会发送sql语句。所以要在save之后马上向数据库发送数据可以采用sesion.flush(),清理临时集合中的数据,并把缓存中相应的数据的exsitsInDatebase标识设置为true,但这是数据库中虽然有数据但是不能查出来,(数据库隔离级别)

 

save()数据时,缓存中有两份数据,分别在session->actionQueue->insertions->elementDate->state和

persistanceContext->entityEntries->map->table->[2]->value->value

commit()的实现原理,首先把临时集合中的数据输入到sql中并清理数据,再把的exsitsInDatebase标识设置为true。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值