# Hibernate saveOrUpdate,merge和update区别

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

</div>

比较update和merge update的作用上边说了，这里说一下merge的。

如果session中存在相同持久化标识(identifier)的实例，用用户给出的对象覆盖session已有的持久实例。

(1)当我们使用update的时候，执行完成后，会抛出异常。

(2)但当我们使用merge的时候，把处理自由态的po对象A的属性copy到session当中处于持久态的po的属性中，执行完成后原来是持久状态还是持久态，而我们提供的A还是自由态。
