Hiberante持久化对象的3种状态

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

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

     关于这3种状态之间的转换,我们可以直接看下面这图就明白了
1222688-20180711202515334-1010679922.jpg
 

转载于:https://www.cnblogs.com/zeng1994/p/8182315.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值