Hibernate对象状态

对象状态

  瞬时(transient)

    自己new出来的对象,数据库没有记录与之对应,与session也没有关联

  持久(persistent)

    数据库中有记录与之对应,当前与session有关联,相关的session未关闭,事务未提交

    持久对象如果发生改变,Hibernate能够检测到,事务提交的时候会将改变后的数据提交给数据库

  脱管(detached,也有翻译成游离)

    数据库有记录与之对应,但没有与session关联,托管对象的改变Hibernate无法检测到


使用场景

  对瞬时对象进行保存报错

  对脱管对象进行更新操作

  如果不清楚是瞬时还是脱管的,就执行saveOrUpdate或merge方法,由Hibernate判断是更新还是插入

    如果调用saveOrUpdate,那么对象会变成持久的,

    如果调用的是merge,那么对象还是脱管的

    id中可以设置unsaveed-value来决定id是什么值就是瞬时态

原文地址:https://www.cnblogs.com/sherrykid/p/4575687.html