Hibernate 对象的三种状态 持久状态 临时状态 游离状态
2016-07-25 19:33
260 查看
Hibernate里有三种对象状态:临时状态 (Transient)、持久状态(Persistent)、游离状态(Detached)
持久状态对象也叫PO (PersistentObject) 临时状态和游离状态的对象也叫VO(ValueObject)
下面分别介绍一下这三种状态:
一、临时状态
临时状态对象是通过实例化的方式注入到内存中,也就是通过New的方式来开辟内存。
临时对象是孤立在内存上的,它不与数据库中的数据有任何关系。比如:
UserEntity userEntity=new UserEntity();
这个时候,userEntity对象就称之为临时对象。如果没有任何引用,jvm将其进行GC回收。
二、持久状态
持久状态的对象是该对象和数据库中的数据存在关联关系,并且拥有持久化的标识。
通过session.get()或者session.load()等获取的数据对象,就是持久化状态的对象。
值得注意的是:如果对持久化对象进行了修改,并没有执行事务提交,这时持久化对象的数据不会同步到数据库中的。
三、游离状态
当某个持久化对象与session断开之后,那么此时,该持久化对象就称之为游离对象。
通常通过session.get()或者session.load()等方式获取的数据后,执行了 session.close()等操作,那么此时获取的持久化对象就转换为游离对象了。
既然Hibernate里存在三种对象,必定这三种对象可以相互转换。下面再介绍一下转换关系:
持久状态对象也叫PO (PersistentObject) 临时状态和游离状态的对象也叫VO(ValueObject)
下面分别介绍一下这三种状态:
一、临时状态
临时状态对象是通过实例化的方式注入到内存中,也就是通过New的方式来开辟内存。
临时对象是孤立在内存上的,它不与数据库中的数据有任何关系。比如:
UserEntity userEntity=new UserEntity();
这个时候,userEntity对象就称之为临时对象。如果没有任何引用,jvm将其进行GC回收。
二、持久状态
持久状态的对象是该对象和数据库中的数据存在关联关系,并且拥有持久化的标识。
通过session.get()或者session.load()等获取的数据对象,就是持久化状态的对象。
值得注意的是:如果对持久化对象进行了修改,并没有执行事务提交,这时持久化对象的数据不会同步到数据库中的。
三、游离状态
当某个持久化对象与session断开之后,那么此时,该持久化对象就称之为游离对象。
通常通过session.get()或者session.load()等方式获取的数据后,执行了 session.close()等操作,那么此时获取的持久化对象就转换为游离对象了。
既然Hibernate里存在三种对象,必定这三种对象可以相互转换。下面再介绍一下转换关系:
相关文章推荐
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码
- jsp hibernate的分页代码第1/3页
- Struts2+Hibernate实现数据分页的方法
- Hibernate环境搭建与配置方法(Hello world配置文件版)
- JAVA+Hibernate 无限级分类
- SSH整合中 hibernate托管给Spring得到SessionFactory
- jsp hibernate 数据保存操作的原理
- hibernate中的增删改查实现代码
- 解决hibernate+mysql写入数据库乱码
- java优化hibernate性能的几点建议
- java Hibernate延迟加载
- hibernate 常用方法介绍
- 详解Java的Hibernate框架中的注解与缓存
- 浅析Java的Hibernate框架中的继承关系设计
- Java的Hibernate框架中的继承映射学习教程
- Hibernate实现批量添加数据的方法
- Hibernate4在MySQL5.1以上版本创建表出错 type=InnDB
- JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册
- SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示