Hibernate update 和 merge 的区别

update  :
 把一个脱管状态的对象或自由态对象(一定要和一个记录对应)更新到数据库,如果session中存在相同持久化标识(identifier)

的实例,则抛错 a different object with the same identifier value was already associated with the session

merge :
 如果session中存在相同持久化标识(identifier)的实例,用用户给出的对象覆盖session已有的持久实例。
(1)当我们使用update的时候,执行完成后,会抛出异常。
(2)但当我们使用merge的时候,把处理自由态的po对象A的属性copy到session当中处于持久态的po的属性中,执行完成后原来是持久状态还

是持久态,而我们提供的A还是自由态!

你可能感兴趣的:(Hibernate update 和 merge 的区别)