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方法的时候就会直接进行保存。