复习 - 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会自动的去处理.

 

 

你可能感兴趣的:(spring,Hibernate,Blog)