用户登录
用户注册

分享至

hibernate状态管理

  • 作者: 横看成岭没双峰
  • 来源: 51数据库
  • 2020-10-26
对于和ibernate而言,对象有三种状态:瞬时对象,持久对象,游离对象或脱管对象
1.瞬时(transient):数据库中没有数据与之对应,超过作用域会被jvm的垃圾收集器回收,一般是new出来且与session没有关联的对象
2.持久(persistent):数据库中有数据与之对应,当前session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到 )。
3,脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;脱管对象状态发生改变,hibernate不能检测到。



  1.瞬时状态:不和session实例关联,在数据库中没有和瞬时对象关联的记录
2.持久状态:和session实例关联,在数据库中有何他关联的记录
3.游离状态:当他与对象关联的session关闭之后,这个对象就变为了游离状态,但是对象可继续被修改,本质上他与瞬时状态相同,只是比瞬时状态的对象多了一个数据库记录标识和ID
他们三个之间也可以相互转换。



  你好!

1,瞬时态(临时态)
a,不被session管理
b,数据库中没有这条记录
c,可以被JVM垃圾回收
2,持久太
a,被session管理
b,数据库中记录存储
c,不能回收
3,游离态(脱离态)
a,不被session管理
b,数据库中有记录
c,可以被JVM垃圾回收

仅代表个人观点,不喜勿喷,谢谢。
软件
前端设计
程序设计
Java相关