• hibernate基础知识02对象的状态转换(持久化,瞬态,游离态)


    1.对象有三种状态,比如User实体类对象 user

      a.瞬态-transientObject,使用new 操作符创建的对象,没有和数据库中的记录相关联(即没有执行增删改查的对象);

      b.持久化对象-persistObject,该对象在数据库中有对应的主键关联,且由session进行管理的对象(被session执行增改查)的对象.

      c.游离态对象-detachedObject,该对象在数据库中有对应的主键关联,但没有被session管理(已经执行过的对象,但session已经关闭,即将注销该对象).

    2.举例

    @Test
    public void test1(){
    Session session = DBManager.openSession();
    session.beginTransaction();
    // //持久态对象,该对象是被session从数据库中取出来的,与数据库有相应的关联
    User user = (User)session.get(User.class, "402880ef5c024d77015c024d7a460000");
    System.out.println("user.id = " + user.getId());


    //瞬态 该对象呗创建出来,但是没有被session 管理也没有和数据库关联
      User user = new User();
      user.setName("小明");
      user.setAge(21);
      user.setSex(0);


    // //瞬态-->持久态  被session管理后执行save()方法就成了持久态对象
    // Serializable id = session.save(user);
    // System.out.println("id = " + id);

    session.getTransaction().commit();
    session.close();

    //游离态对象.session已经关闭了...user虽然和数据库有了关联(被执行过save()方法),但是已经脱离了session 的管理
    System.out.println(user.getName());
    }

    基本概念不难理解...

  • 相关阅读:
    hdu 2647 Reward
    hdu 2094 产生冠军
    hdu 3342 Legal or Not
    hdu 1285 确定比赛名次
    hdu 3006 The Number of set
    hdu 1429 胜利大逃亡(续)
    UVA 146 ID Codes
    UVA 131 The Psychic Poker Player
    洛谷 P2491消防 解题报告
    洛谷 P2587 [ZJOI2008]泡泡堂 解题报告
  • 原文地址:https://www.cnblogs.com/ou134568/p/6860028.html
Copyright © 2020-2023  润新知