码迷,mamicode.com
首页 > 其他好文 > 详细

Hiberante持久化对象的3种状态

时间:2018-01-03 11:43:58      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:obj   code   student   lan   分享图片   new   inf   直接   span   

    近日一同事问我关于Hibernate中对象的3种状态的问题,因此特意总结一下。在Hibernate中对象是有以下3中状态:
      • 瞬时态(transient object)没有OID值,没有被session对象管理
      • 持久态(persistent object):有OID值,被session对象管理了
      • 脱管态(detached object):有OID值,没有被session管理

      上面说的这个OID其实是指主键属性,可以简单的理解为id(一般我们的主键都是id)。下面通过代码来介绍下这3中状态:
  1. public class Demo2 {
  2. @Test
  3. public void test1(){
  4. Session session = HibernateUtil.getSession();
  5. session.beginTransaction();
  6. //s:没有IOD,没有被session管理
  7. //1,这个s对象就是瞬时态对象
  8. Student s =new Student();
  9. s.setName("美美");
  10. //save()方法返回OID的值
  11. Serializable id = session.save(s);
  12. //当前s被session的save执行后
  13. //s: 有OID,已经被session管理了
  14. //2,这个s对象就是持久态对象
  15. System.out.println(id);
  16. System.out.println(s.getId()); //持久态对象有id的
  17. session.getTransaction().commit();
  18. session.close();//session关闭了
  19. //s: 有OID,没有被session对象
  20. //3.这个s对象就是脱管态对象
  21. System.out.println(s.getId());
  22. }
  23. }

     关于这3种状态之间的转换,我们可以直接看下面这图就明白了
技术分享图片
 

Hiberante持久化对象的3种状态

标签:obj   code   student   lan   分享图片   new   inf   直接   span   

原文地址:https://www.cnblogs.com/zeng1994/p/8182315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!