`
付绍高
  • 浏览: 35852 次
  • 性别: Icon_minigender_1
  • 来自: 江西临川
社区版块
存档分类
最新评论

hibernate三种状态

阅读更多

一:对象的状态

    瞬时:数据库没有数据与之对应,超过作用域会被jvm垃圾回收器回收,一般是new出来session没有关联的对象

  持久:数据库中有对应的数据与只对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交,持久对象状态发生改变,在事务提交时会影响到数据库

  脱管(游离)数据库中有数据与之对应,但是没有session与之关联托管对象发生改变时hibernate不能检测到数据库有这个记录,所以当更新时update才能用的上,而set只能用在持久对象中因为这是hibernate能检测,不用调用update方法,所以update只能在托管中用,但是往往很多时候不知道session是不是关闭了,或数据库有没有这条记录,所以savaOrUpdate可以解决,当没有查到id时就会调用save方法,否则就调用update方法<id name=”id” unsaved-value=”-1”>当查到数据库为-1的时候就调用save方法

 

二:三种状态的相互转化 

   瞬时通过new----save  saveOrUpdate----> 持久persistent  —delete——>transient瞬时对象

   Persistent持久——close evict  clear——>Detached托管——update saveOrUpdate lock——>持久

   数据库的对象—get load find iterate etc———>持久对象

   瞬时对象和托管对象通过garbage被垃圾回收机制回收   

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics