2007-09-06

Hibernate学习笔记 - Object的三种状态

关键字: java hibernate

objects在hibernate中的生命周期中存在3种状态:transient, persistent, detached。附件1描述的即是hibernate application中objects的生命周期。

通过new操作符生成的object是transient object,此时的object还没有和数据库中的任何数据关联,所以一旦没有被引用,就会被jvm垃圾收集。一旦通过Hibernate 的Persistence manager执行了save()方法或者被其他已经存在的Persistent objects引用,那么object的状态就会从transient转为persistent。

Persistent objects是包含在transactions中的,它们的状态是通过transactions来控制的,  Persistent objects是和数据库中的表对应的,所以表示主键的属性不会为空,也就是说每一个persistent object都会有一个匹配的database identity,除非是通过new产生的新的transient object,此时object的database identity是空的,如果在transaction中对该object执行save()方法,那么在transaction成功结束的时候该object会在数据库中新增一条对应的记录,其它已经存在的persistent objects会相应的更新数据库中的相应行。

当Hibernate中的Persistence Manager执行close()方法,也就是persistence Manager放弃对persistent objects的控制,那么persistent objects的状态就转为detached objects。这些detached objects可以在未来被新的persistence manager重新控制并使用。这种将object从transaction转向表现层然后又重新包含于新的Transaction的实现是Hibernate的一个卖点。

在objects存在的三种状态中,处于persistent状态中object的比较是通过该object的database identity来确定的,所以这里需要override equals()来实现。其它状态中的objects就可以简单的通过java的equality来判断即可。

  • Dfa69fdf-36bc-4586-ba23-7d2edc2aacf0-thumb
  • 描述:
  • 大小: 28.2 KB
评论
发表评论

您还没有登录,请登录后发表评论

cjyzpcl
搜索本博客
最近加入圈子
存档
最新评论