zoukankan      html  css  js  c++  java
  • 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());
        }
    }

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

  • 相关阅读:
    字节流 数据报 原始套接字
    付宝研究员王益:“对我影响最大的三本编程书”
    e^π和π^e谁大的问题
    https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth
    计算机 人造学科
    位域 内存对齐
    LeetCode上并发题目无Go版本:台湾同胞试水 — 交替打印FooBar
    a
    Hash-based .pyc Files
    Most basic operations in Go are not synchronized. In other words, they are not concurrency-safe.
  • 原文地址:https://www.cnblogs.com/zeng1994/p/8182315.html
Copyright © 2011-2022 走看看