hibernate中对象的瞬时态,持久态,脱管态

来源:互联网 发布:炒股软件哪款好 编辑:程序博客网 时间:2024/06/04 23:23

1.1  PO对象状态

hibernate规定3个状态:瞬时态Transient、持久态Persistent、脱管态Detached

       瞬时态:session没有缓存,数据库没有记录。(临时态)没有OID

       持久态:session有缓存,数据库最终会有。(托管态)有OID

       脱管态:session没有缓存,数据库有记录。(游离态)有OID

1.1.1   瞬时态

  瞬时态--> 持久态

       瞬时态,直接创建的对象。

       转换:执行save() 或 saveOrUpdate()

       Studentstudent = new Student();         //瞬时态

       session.save(student);                   //持久态 ,默认情况:执行insert语句,进数据库,临时数据,直到提交

l 瞬时态--> 脱管态

       手动设置OID

       Studentstudent = new Student();         //瞬时态

       student.setSid(1);                 //脱管态 (如果OID不存在,认为欺骗hibernate,将抛异常)

1.1.2   持久态

持久态-->瞬时态

       执行delete() 瞬时态

 持久态-->脱管态

       执行

              session.close()  关闭

              session.clear() 清空缓存

              session.evict(object)将指定对象从缓存移除

1.1.3   脱管态

 脱管态-->瞬时态

       手动移除OID,设置成默认值。

 脱管态-->持久态

       执行update()  或 saveOrUpdate()



0 0
原创粉丝点击