标签:
对象状态
瞬时(transient)
自己new出来的对象,数据库没有记录与之对应,与session也没有关联
持久(persistent)
数据库中有记录与之对应,当前与session有关联,相关的session未关闭,事务未提交
持久对象如果发生改变,Hibernate能够检测到,事务提交的时候会将改变后的数据提交给数据库
脱管(detached,也有翻译成游离)
数据库有记录与之对应,但没有与session关联,托管对象的改变Hibernate无法检测到
使用场景
对瞬时对象进行保存报错
对脱管对象进行更新操作
如果不清楚是瞬时还是脱管的,就执行saveOrUpdate或merge方法,由Hibernate判断是更新还是插入
如果调用saveOrUpdate,那么对象会变成持久的,
如果调用的是merge,那么对象还是脱管的
id中可以设置unsaveed-value来决定id是什么值就是瞬时态
标签:
原文地址:http://www.cnblogs.com/sherrykid/p/4575687.html