hibernate的状态有三种:自由态、持久态、游离态。
自由状态特征:
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()方法使实体对象从游离状态变为持久状态。
状态转换图如下: