hibernate的三种状态(儿)

时间:2023-03-09 07:59:42
hibernate的三种状态(儿)

第五讲:hibernate的三种状态

瞬时:bean对象与session,与数据库无关。在session对象的save方法保存之前。

持久状态(托管):bean对象与session有关,数据库中有对应的记录。在save的保存方法之后,在session对象的关变之前。Session知道对象的变化,此时对象的变化即使在session保存对象之后session也可以把数据的变化保存在数据库中。(s.save--àstr.commit-----s.close)

在这个过程中对象变化的话即为更新upddate(产生两条语句insert 和update语句)

既update更新的对象处于持久状态中。

当对象不知道处于是处于瞬时状态还是托管状态就用SaveOrupdate状态,让hibernate自己去判断是处于瞬时状态还是托管状态(hibernate会根据对象的id是否有值去判断是保存还是更新。若是有值则更新若是没有则保存  ,id为整形的则判断id是否为0。判断是保存还是更新。String 类型的则判断是否为空进行判断是更新还是保存

持久状态:session对象关闭,与数据库无关。与session在session对关闭之后象(对应的对象ID有值)。

Un-save主键默认sesssion为保存的值当id的值与Un-save的声明的值相等的时候就会直接进行不存在saveOrUpdate方法的时候就会直接进行保存。