[b]Hibernate中对象的状态:[/b]
持久态(persisted),游离态(detached),临时态(transient)
它们之间状态的转换:
自由状态特征:
1. 不在Session缓存中
2. 数据库中没有对象记录
如何进入临时状态:
1. 通过new语句刚创建一个对象
2. 当调用Session的delete()方法,从Session缓存中删除一个对象时
持久化状态特征:
1. 处于Session缓存中
2. 持久化对象数据库中设有对象记录
3. Session在特定时刻会保持二者同步
如何进入持久化状态:
1. Session的save()把临时--->持久化状态
2. Session的load(),get()方法返回的对象
3. Session的find()返回的list集合中存放的对象
4. Session的update(),saveOrupdate()是游离--->持久化状态
游离状态特征:
1. 不在Session缓存中
2. 游离对象由持久化状态转变而来,数据库中可能还有对应记录。
持久到游离:
1. Session的close()方法
2. Session的evict()方法,从缓存中删除一个对象。提高性能。少用。
Save()方法把实体对象从自由状态转变为持久状态
Load(),get()方法返回的实体对象总是持久状态
Update(),saveOrUpdate(),lock()方法使实体对象从游离状态转变为持久状态
持久态(persisted),游离态(detached),临时态(transient)
它们之间状态的转换:
自由状态特征:
1. 不在Session缓存中
2. 数据库中没有对象记录
如何进入临时状态:
1. 通过new语句刚创建一个对象
2. 当调用Session的delete()方法,从Session缓存中删除一个对象时
持久化状态特征:
1. 处于Session缓存中
2. 持久化对象数据库中设有对象记录
3. Session在特定时刻会保持二者同步
如何进入持久化状态:
1. Session的save()把临时--->持久化状态
2. Session的load(),get()方法返回的对象
3. Session的find()返回的list集合中存放的对象
4. Session的update(),saveOrupdate()是游离--->持久化状态
游离状态特征:
1. 不在Session缓存中
2. 游离对象由持久化状态转变而来,数据库中可能还有对应记录。
持久到游离:
1. Session的close()方法
2. Session的evict()方法,从缓存中删除一个对象。提高性能。少用。
Save()方法把实体对象从自由状态转变为持久状态
Load(),get()方法返回的实体对象总是持久状态
Update(),saveOrUpdate(),lock()方法使实体对象从游离状态转变为持久状态