Hibernate中对象的三种状态关系及转换方法
在Hibernate中总共有3中对象的状态,分别为瞬时态、持久态、脱管态(游离态)。下面分别介绍下对象在何时处于什么样的状态
瞬时态:
在对象通过new关键在实例化后,所属的状态就是瞬时态。
持久态:
当对象通过session插入或更新到DB的时候,而session并没有关闭时候的状态即为持久态。
脱管态:
当session关闭后,而DB中又有该对象对应的一条数据,及称这种状态为脱管态。
处于不同状态下的特点
瞬时态的特点为并没有被hibernate所监控而且数据库中还没有与该对应的数据。
持久态的特点为被session所监控,也就是说当该对象的某一条属性或者多条属性被更改的时候,在DB中对应的数据也会随之做出更新操作。
脱管态的特点就是无论该对象如何更新,在数据库中对应的数据都不会因该对象的变化而产生更新。
这三种状态之间是可以通过方法进行转换的。
瞬时态转换到持久态 save() saveOrUpdate()
持久态转换到瞬时态 delete()
持久态转换到脱管态 evict() close() clear()
脱管态转换到持久态 update() saveOrUpdate() lock()