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还是自由态!
本文探讨了在对象关系映射(ORM)中update与merge方法的区别。update用于将脱管或自由态对象更新到数据库,若Session中存在相同标识的实例则会抛出异常。而merge方法会在Session中有相同标识实例时,用新对象覆盖已有实例,同时保持原对象的自由状态。
1299

被折叠的 条评论
为什么被折叠?



