您的位置:首页 > 其它

关于Hibernate的merge() attachDirty() attachClean()三种方法比较使用

2009-09-16 20:22 531 查看
// 关于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;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐