关于merge() attachDirty() attachClean()三种方法
// 关于merge() attachDirty() attachClean()三种方法下面做一个简单的介绍
/** * 将传入的detached状态的对象的属性复制到持久化对象中,并返回该持久化对象。 * 如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持detached状态。 */ public CodeDepts merge(Usertable detachedInstance) { log.debug("merging Usertable instance"); try { Usertable result = (Usertable) getSession() .merge(detachedInstance); log.debug("merge successful"); return result; } catch (RuntimeException re) { log.error("merge failed", re); throw re; } } /** * 将传入的对象持久化并保存。 * 如果对象未保存(Transient状态),调用save方法保存。如果对象已保存(Detached状态),调用update方法将对象与Session重新关联。 */ public void attachDirty(Usertable instance) { log.debug("attaching dirty Usertable instance"); try { getSession().saveOrUpdate(instance); log.debug("attach successful"); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } } /** * 将传入的对象状态设置为Transient状态 */ public void attachClean(Usertable instance) { log.debug("attaching clean Usertable instance"); try { getSession().lock(instance, LockMode.NONE); log.debug("attach successful"); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } }