# Hibernate lock和update区别

**URL:** <https://www.isharkfly.com/t/hibernate-lock-update/6491>\
**Category:** 程序语言\
**Created:** [May 24, 2011, 5:04pm UTC](https://www.isharkfly.com/t/hibernate-lock-update/6491 "2011-05-24T17:04:50Z")\
**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:04pm UTC](https://www.isharkfly.com/t/hibernate-lock-update/6491/1 "2011-05-24T17:04:50Z")

</div>

update是把一个已经更改过的脱管状态的对象变成持久状态。

lock是把一个没有更改过的脱管状态的对象变成持久状态(针对的是因Session的关闭而处于脱管状态的po对象(2)，不能针对因delete而处于脱管状态的po对象)

对应更改一个记录的内容，两个的操作不同：

update的操作步骤是：  
(1)属性改动后的脱管的对象的修改-\>调用update lock的操作步骤是：

(2)调用lock把未修改的对象从脱管状态变成持久状态–\>更改持久状态的对象的内容–\>等待 flush或者手动flush。
