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

  1. //关于merge()attachDirty()attachClean()三种方法下面做一个简单的介绍
  2. /**
  3. *将传入的detached状态的对象的属性复制到持久化对象中,并返回该持久化对象。
  4. *如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持detached状态。
  5. */
  6. publicCodeDeptsmerge(UsertabledetachedInstance){
  7. log.debug("mergingUsertableinstance");
  8. try{
  9. Usertableresult=(Usertable)getSession()
  10. .merge(detachedInstance);
  11. log.debug("mergesuccessful");
  12. returnresult;
  13. }catch(RuntimeExceptionre){
  14. log.error("mergefailed",re);
  15. throwre;
  16. }
  17. }
  18. /**
  19. *将传入的对象持久化并保存。
  20. *如果对象未保存(Transient状态),调用save方法保存。如果对象已保存(Detached状态),调用update方法将对象与Session重新关联。
  21. */
  22. publicvoidattachDirty(Usertableinstance){
  23. log.debug("attachingdirtyUsertableinstance");
  24. try{
  25. getSession().saveOrUpdate(instance);
  26. log.debug("attachsuccessful");
  27. }catch(RuntimeExceptionre){
  28. log.error("attachfailed",re);
  29. throwre;
  30. }
  31. }
  32. /**
  33. *将传入的对象状态设置为Transient状态
  34. */
  35. publicvoidattachClean(Usertableinstance){
  36. log.debug("attachingcleanUsertableinstance");
  37. try{
  38. getSession().lock(instance,LockMode.NONE);
  39. log.debug("attachsuccessful");
  40. }catch(RuntimeExceptionre){
  41. log.error("attachfailed",re);
  42. throwre;
  43. }

你可能感兴趣的:(Hibernate)