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()