# Hibernate flush和update区别

**URL:** <https://www.isharkfly.com/t/hibernate-flush-update/6490>\
**Category:** 程序语言\
**Created:** [May 24, 2011, 5:03pm UTC](https://www.isharkfly.com/t/hibernate-flush-update/6490 "2011-05-24T17:03:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [May 24, 2011, 5:03pm UTC](https://www.isharkfly.com/t/hibernate-flush-update/6490/1 "2011-05-24T17:03:54Z")

</div>

这两个的区别好理解 update操作的是在自由态或脱管状态(因session的关闭而处于脱管状态)的对象//updateSQL 而flush是操作的在持久状态的对象。

默认情况下，一个持久状态的对象的改动（包含set容器）是不需要update的，只要你更改了对象的值，等待hibernate flush就自动更新或保存到数据库了。hibernate flush发生在以下几种情况中：

1， 调用某些查询的和手动flush(),session的关闭、SessionFactory关闭结合 get()一个对象，把对象的属性进行改变,把资源关闭。

2，transaction commit的时候（包含了flush）。
