关于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;
}
}
/**
* 将传入的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;
}
}
相关文章推荐
- 关于hibernate的merge、attachDirty、attachClean方法的应用
- hibernate自动生成的DAO类中的merge() attachDirty() attachClean()方法简单介绍
- 关于在xcode中使用Versions时,比较文件出现The File Merge application could not be located. 解决方法
- 关于在xcode中使用Versions时,比较文件出现The File Merge application could not be located. 解决方法
- 在Hibernate中使用 HibernateTemplate的三种方法
- 使用Hibernate注解来配置多对一单向的三种方法
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- 总结C++中三种关于"new"的使用方法
- Hibernate基础使用:CRUD方法及实体对象的三种状态
- JAVA学习(十六)__Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Spring+Hibernate DAO 持久层开发, Spring 用 Hibernate 访问数据库的三种方法.推荐使用回调
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- 关于使用super.getHibernateTemplate()中的方法报java.lang.NullPointerException的解决办法
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- Hibernate持久化对象三种状态的区分,以及save,update,saveOrUpdate,merge,persist等的使用
- 在Hibernate中使用 HibernateTemplate的三种方法