hibernate 数据的三个状态

来源:互联网 发布:网络回路检测 编辑:程序博客网 时间:2024/05/21 10:08

我们把数据库比喻成一个登记簿吧,当我们把信息登记到登记簿上的时候,这个过程就是持久化的过程。当登记完成之后,登记簿上的数据就是

持久态数据,所谓持久态就是一直存在的状态。当我们需要用数据的时候,会从登记簿上查信息,我们查到的信息记录在临时的纸张或者脑海里

,然后登记簿会放回原位,这时候临时纸张上或者脑海里的数据就是游离态,随时可能被遗忘,在hibernate中就是随时会被销毁的数据。瞬态数

据和游离态数据有点儿类似,但是一点,就是他是存在持久化之前的数据,就是说我需要登记个人信息,我的个人信息还没有登记到登记簿上的

时候,信息就是瞬态,一旦登记到登记簿上就变成持久态了,然后再查询到的就是游离态。

. 瞬时状态(临时状态)

当new 对象时候,处于瞬时状态(如果程序运行完了,该对象会被垃圾回收)


b. 持久状态


跟session有关,就是持久状态


持久状态的对象,任何的修改,都会影响到数据库中与之对应的数据


c. 托管状态(游离状态)


当session不在管理对象的时候,脱离了session 的管理,处于托管状态的对象,修改属性,对数据库数据没有任何影响


企业开发中,使用saveOrUpdate(obj): 来替代save(obj)或update(obj)

方法避免因为状态的改变,导致方法出错, saveOrUpdate(obj)


可以根据obj的状态,来选择是save()还是update()