Hibernate中的merge说明
当new一个对象,赋予ID值,该对象被称为游离态看待。
在进行数据库操作的时候,1. 如果在数据库中能够根据ID找到记录,update和merge的操作都是更新数据。
2.如果没有找到记录,update肯定会报错,执行merge操作的话,就相当于insert操作。
如果没有赋予ID,执行update会报错,这时执行merge会添加一条记录,根据ID生成策略生成一条数据。
--------------
另外一个情况是:在Hibernate中查询出一个对象的时候,该对象被称为持久态看待。
持久态.执行merge(游离态),会合并两个对象的值。改变的是持久态的值,而游离态的值没有发生改变。(自己本身不会变成持久态)。
原文:http://blog.csdn.net/lang_man_xing/article/details/7572964
详细代码示例:http://www.cnblogs.com/hyteddy/archive/2011/05/10/2041762.html