Hibernate实体3种状态Transient/Persistent/Detached
2015-06-17 13:24
537 查看
Hibernate实体3种状态Transient/Persistent/Detached
博客分类: java
Hibernate框架
实体对象的生命周期有三种状态:
1.Transient(自由状态)
此时的实体对象和数据库中的记录无关联,只是一个普通的JavaBean。
2.Persistent(持久状态)
此时的实体对象和数据库中的记录有关联,其变更将由Hibernate固化到数据库中。该实体对象处于由Hibernate框架所管理的状态。
3.Detached(游离状态)
处于Persistent状态的对象,其对应的Session实例关闭之后,那么,此对象就处于"Detached"状态。Detached状态和Transient状态的区别在于Detached状态的对象可以再次与某个Session实例相关联而成为Persistent对象。
从实体对象是否被纳入Hibernate实体管理容器的角度,Transient和Detached状态的实体对象可以统称为VO(Value Object),而被管理的实体对象称为PO(Persistent Object)。两者的区别:
1.VO是相对独立的实体对象,处于非管理状态。
2.PO是Hibernate纳入其实体管理容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反映到实际数据库中。
3.如果一个PO与其对应的Session实例分离,那么此时,它又会变成一个VO。
下图是我画的实体对象生命周期的状态转换图:
相关文章推荐
- 让软件好好活着之一 -- 设计第一
- Java生成和操作Excel文件
- linux用户密码策略测试
- 职业之路
- MSSQL获取当前插入的ID号及在高并发的时候处理方式
- NSArray 和 NSDictionary 的内存问题
- “好程序员笔记”反射与内省
- 淘宝助理导出的csv文件使用的是什么编码,您猜?
- 决定平民子弟前途命运的主要因素到底是什么?
- Sublime Text3 安装Emmet
- 【Android之隐藏状态栏、设置全屏、取消全屏】
- 自定义MD5加密
- Gitserver几家互联网代理安装方法未能解决。
- asp(utf-8) set cookie 用 javascript 读cookie发现一个问题
- Android手机分辨率基础知识(DPI,DIP计算)
- Android MaterialDesign中颜色
- linux 命令——36 diff(转)
- 学长们的求职血泪史(C/C++/JAVA)
- PP生产订单状态显示(rel等)如何查询表,字段
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记33 LifeCycle生命周期