zoukankan      html  css  js  c++  java
  • hibernate 三个状态

    Transient(瞬时状态),表示对象没有被session管理并且数据库中没有;

    Persistent(持久化状态),表示对象已经被session管理且数据库中有;

    游离状态,表示对象没有被session管理,但是在数据库中有;

    User user = new User();

    user.setName("zhangsan");

    //到此,对象user是处于瞬时状态;

    session.save(user);

    //执行save之后,user被session所管理,且,数据库中已经存在,此时就是Persistent状态

    user.setName("lisi"); 

    //当在提交时,会把session中的对象和目前的对象进行比较

    //如果两个对象中的值不一致就会继续发出相应的sql语句

    session.getTransaction().commit();

    //所以上面的代码会产生两条sql语句,一个是插入语句,一个是更新语句;

    在session中不能存在两份拷贝,否则会抛出异常,

    不过用merge方法会判断session中是否已经存在同一个对象,如果存在就将两个对象合并;

    但是一般还是用save方法,不用merge方法。

  • 相关阅读:
    c++虚函数
    Boost Graph Library
    二分查找 http://ac.jobdu.com/problem.php?pid=1545
    二叉树应用
    注解篇二
    springboot+fastdfs+docker
    注解篇一
    vue启动加修改例子
    SSM框架中的中文乱码问题
    mybatis4
  • 原文地址:https://www.cnblogs.com/yzdqxing/p/4097372.html
Copyright © 2011-2022 走看看