hibernate save update merge 区别

1.save

save的对象是临时对象,首先将对象写入缓存,使其变为持久对象。

save函数底层使用的是Insert语句,因此如果数据库中已经存在相同ID的记录,那么会报错

2.update

update的对象是一个游离对象,将其更新为持久对象。如果已经存在一个相同ID的

持久对象,那么会报错。

update底层使用的是update语句,因此如果数据库中没有相同ID的记录,那么会报错

3.merge

当我们使用update的时候,执行完成后,我们提供的对象A的状态变成持久化状态。 
但当我们使用merge的时候,执行完成,我们提供的对象A还是脱管状态,hibernate或者new了一个B,或者检索到 一个持久对象B,并把我们提供的对象A的所有的值拷贝到这个B,执行完成后B是持久状态,而我们提供的A还是托管状态。

原文地址:https://www.cnblogs.com/elnino/p/5821297.html