Hibernate中java对象的状态
2015-10-27 19:53
477 查看
Hibernate把对象分为 4 种状态:
持久化状态,
临时状态,
游离状态,
删除状态.
Session 的特定方法能使对象从一个状态转换到另一个状态
不处于 Session 的缓存中
在数据库中没有对应的记录
从一个 Session实例的缓存中删除
Session已经计划将其从数据库删除, Session 在清理缓存时, 会执行 SQL delete 语句, 删除数据库中的对应记录
一般情况下, 应用程序不该再使用被删除的对象
3.持久化对象(也叫”托管”)(Persist)
OID不为 null
位于 Session 缓存中
持久化对象和数据库中的相关记录对应
Session在清理缓存时, 会根据持久化对象的属性变化, 来同步更新数据库
在同一个 Session 实例的缓存中, 数据库表中的每条记录只对应唯一的持久化对象
4.游离状态(也叫”脱管”)(Detached)
OID不为 null
不再处于 Session 的缓存中
一般情况需下, 游离对象是由持久化对象转变过来的, 因此在数据库中可能还存在与它对应的记录
下面是对象状态的转换图
持久化状态,
临时状态,
游离状态,
删除状态.
Session 的特定方法能使对象从一个状态转换到另一个状态
1.临时对象(transient)
在使用代理主键的情况下, OID 通常为 null不处于 Session 的缓存中
在数据库中没有对应的记录
2.删除对象(Removed)
OID不为 null从一个 Session实例的缓存中删除
Session已经计划将其从数据库删除, Session 在清理缓存时, 会执行 SQL delete 语句, 删除数据库中的对应记录
一般情况下, 应用程序不该再使用被删除的对象
3.持久化对象(也叫”托管”)(Persist)
OID不为 null
位于 Session 缓存中
持久化对象和数据库中的相关记录对应
Session在清理缓存时, 会根据持久化对象的属性变化, 来同步更新数据库
在同一个 Session 实例的缓存中, 数据库表中的每条记录只对应唯一的持久化对象
4.游离状态(也叫”脱管”)(Detached)
OID不为 null
不再处于 Session 的缓存中
一般情况需下, 游离对象是由持久化对象转变过来的, 因此在数据库中可能还存在与它对应的记录
下面是对象状态的转换图
相关文章推荐
- myeclipse添加jre
- JAVA
- domino java多线程运用
- eclipse 中的maven 不能自动关联下载代码的解决方案
- JAVA Playing a TicTacToe game
- springmvc 整合shiro
- Java中的IO流系统详解
- spring mvc 出现“Failed to convert property value of type”解决方法
- 浅谈Java中的System.gc()的工作原理
- PAT 1015. Reversible Primes (20)
- Eclipse黑色背景保护眼睛设置分享
- Struts2(五)数据校验
- [置顶] Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)
- Java:内部类(静态内部类、成员内部类、局部内部类、匿名内部类)
- Spring注解注入
- java集合类(容器)
- Java学习日记 I/O
- Java学习日记 集合
- Struts核心文件
- Struts2框架提供的result结果类型