Hibernate学习笔记 - Object的三种状态
关键字: java hibernateobjects在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来判断即可。
发表评论
- 浏览: 18986 次
- 性别:

- 来自: 成都

- 详细资料
搜索本博客
最新评论
-
Rails实现随机验证码
执行到这一句granite = Magick::ImageList.new('x ...
-- by wzp2000 -
表单验证错误信息一些使用 ...
请问你提到的中文化validator的资料哪里能找到?我一直搜索不到阿..
-- by chaoqun2003 -
Rails实现随机验证码
Thanks a lot
-- by llleelay -
Rails实现随机验证码
我就想拿验证码来防止这个灌水,没想到JAVAEYE的blog也没有这个功能。
-- by sstt -
Rails实现随机验证码
ggggggggggggggggg
-- by sstt






评论排行榜