复习 - merge的几种使用情况
复习 - merge的几种使用情况
?
总结了一下,merge()方法一般会有如下几种情况处理方法:
?
1. ?当持久化环境存在和merge对象相同的对象,即上一篇文章 << 复习 - detached对象重回持久化环境 >> (http://spring-china.iteye.com/blog/973759) 的最后一个例子
?
处理: ?Hiberante会将merge对象的值赋给持久化环境中的对象.?
?
2. 当持久化环境中不存在和merge对象相同的对象,但是数据库中确实存在merge对象对应的数据
?
处理: ?Hibernate会将merge对象变成persistent对象,同时把merge对象所有的值赋值给persistent对象的引用,然后进行相关的操作.
?
3. 当持久化环境中不存在和merge对象相同的对象,而且数据库中也不存在merge对象对应的数据
?
处理: ?Hibernate会new一个persistent状态的对象,然后将merge对象的所有值赋值给这个persistent对象,再将数据同步到数据库中.
?
4. 当merge对象是transient状态
?
处理 : Hibernate会直接将该transient对象直接持久化到数据库中.
?
?
Additional:
?
还有一个saveOrUpdate()方法,这个方法可以让想偷懒的人省点力,因为它可以不用你去区分对象是transient状态还是detached状态,Hiberante会自动的去处理.
?
?