一下简述:不准确,大概描述。
瞬时态:没有id且没有与session关联 (刚创建对象)
持久态:有id且和session关联 (session加入缓存操作的过程)
托管态:有id且和session失去关联,与数据库产生关联 (保存之后)
☆注意:
持久化对象可以自动更新数据库 (依赖于一级缓存)
例如 session.get 获取之后 通过set修改
三种状态的获取与转换
瞬时态:(transient)
获取:
New 出来
转换:
瞬时态——>持久态
调用session的save或者saveOrUpdate方法
瞬时态——>托管态
可以认为给对象设置一个oid (不准确)
持久态:(persistent)
获取:
Session的get或者load或者其他的查询获取方法
转换:
持久态——>瞬时态
官方给的说法是:调用session的delete方法(概念有争议)
持久态——>托管态
调用session的close方法或者clear或者evict方法(驱逐一个对象)
托管态:(detached)
获取:
可以认为创建一个对象,设置一个数据库中存在的oid (不准确)
转换:
托管态——>持久态
调用session的update或者saveOrUpdate方法
托管态——>瞬时态
可以认为将对象的oid设置为null(不准确)