• hibernate学习(三) hibernate中的对象状态


    hibernate对象的状态分为三种:  游离状态,持久化状态,瞬时状态

    下面一行代码区分:

     

       Configuration   cfg=new Configuration().configure();

       SessionFactory sessionFactory=cfg.buildSessionFactory();

       Session session=sessionFactory.openSession();

       Transaction    tx=session.beginTransaction();

       Person p=new Person ();  //  瞬时状态  ,没有id  ,没有与session关联  

       p.setName("zhangsan");

       p.setAge(13);

       p.setSex("男”);

       session.save(p); // 持久化状态   有id值  ,与session有关联

       tx.commit();     

       session.close(); // 游离 或托管状态   ,有id  和session无关联

      

     save () 方法:不能理解成保存,  理解成 将瞬时状态转换成持久状态的方法 

    主键自增:在执行save方法时为了将对象转化为持久化状态,必须生成id值   ,必须执行insert值   

    increament :执行save方法  ,为了生成id,会执行select  语句查询最大id值

    hibernate主配置 设置      显示sql  语句,   规范sql语句;

    下面操作来验证  :

        在session处设置断点  

       1.当 orm元数据配置中的主键生成策略为  navtive   (自动递增  /数据库中操作 )

       执行该断点代码 ,控制台出现   insert into   person  (name ,age ,sex)  values(?,?,?);   // id的添加由数据库操作

       2.当  主键生成策略改为  increament  (先在数据库查询最大值 ,最大值id+1    //  hibernate 操作)

       执行该断点代码  session.save()    控制台出现 select  *  from max(id)   from   person  

     持久化特点

     测试类 方法fn2() 部分代码:

      Person p=session.get(Person.class ,1 );  //持久化状态

      p.setName("李四");

      tx.commit();

      session.close(); // 游离状态

     

    执行控制台出现

      select    *   from   person   where id=1  ;

      update person set   name=? 

     

    以上情景表示 :  

    持久化对象的特点:  持久化对象的任何变化 都 会自动同步到数据库中   

    提问 那更新操作中的 update 方法有什么作用  :       把对象从游离状态转换为持久化状态

      

  • 相关阅读:
    BZOJ2144跳跳棋——LCA+二分
    BZOJ[Usaco2017 Jan]Promotion Counting——线段树合并
    BZOJ4551[Tjoi2016&Heoi2016]树——dfs序+线段树/树链剖分+线段树
    BZOJ1559[JSOI2009]密码——AC自动机+DP+搜索
    BZOJ1222[HNOI2001]产品加工——DP
    [IOI2018]狼人——kruskal重构树+可持久化线段树
    BZOJ3091城市旅行——LCT区间信息合并
    Link-Cut Tree(LCT)&TopTree讲解
    BZOJ3669[Noi2014]魔法森林——kruskal+LCT
    BZOJ4530[Bjoi2014]大融合——LCT维护子树信息
  • 原文地址:https://www.cnblogs.com/shaoxiaohuan/p/7919403.html
Copyright © 2020-2023  润新知