Hibernate 对象的三种状态 transient persistent detached
2015-06-04 22:01
579 查看
Hibernate对象状态
临时(Transient) - 由new操作符创建,且尚未与Hibernate Session 关联的对象被认定为临时(Transient)的。临时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier)。 如果临时(Transient)对象在程序中没有被引用,它会被垃圾回收器(garbage collector)销毁。 使用Hibernate Session可以将其变为持久(Persistent)状态。(Hibernate会自动执行必要的SQL语句)
持久(Persistent) - 持久(Persistent)的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier)。 持久(Persistent)的实例可能是刚被保存的,或刚被加载的,无论哪一种,按定义,它存在于相关联的Session作用范围内。 Hibernate会检测到处于持久(Persistent)状态的对象的任何改动,在当前操作单元(unit of work)执行完毕时将对象数据(state)与数据库同步(synchronize)。 开发者不需要手动执行UPDATE。将对象从持久(Persistent)状态变成瞬时(Transient)状态同样也不需要手动执行DELETE语句。
游离(Detached) - 与持久(Persistent)对象关联的Session被关闭后,对象就变为游离(Detached)的。 对游离(Detached)对象的引用依然有效,对象可继续被修改。游离(Detached)对象如果重新关联到某个新的Session上, 会再次转变为持久(Persistent)的(在Detached其间的改动将被持久化到数据库)。 这个功能使得一种编程模型,即中间会给用户思考时间(user think-time)的长时间运行的操作单元(unit of work)的编程模型成为可能。
我们称之为应用程序事务,即从用户观点看是一个操作单元(unit of work)。
Hibernate中对象的游离状态是指Session关闭之后,持久化对象变成离线对象,离线对象就不能同数据库同步,也不再受Hibernate管理。操作 处于游离态对象 经常会报 session已关闭的错误。
临时(Transient) - 由new操作符创建,且尚未与Hibernate Session 关联的对象被认定为临时(Transient)的。临时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier)。 如果临时(Transient)对象在程序中没有被引用,它会被垃圾回收器(garbage collector)销毁。 使用Hibernate Session可以将其变为持久(Persistent)状态。(Hibernate会自动执行必要的SQL语句)
持久(Persistent) - 持久(Persistent)的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier)。 持久(Persistent)的实例可能是刚被保存的,或刚被加载的,无论哪一种,按定义,它存在于相关联的Session作用范围内。 Hibernate会检测到处于持久(Persistent)状态的对象的任何改动,在当前操作单元(unit of work)执行完毕时将对象数据(state)与数据库同步(synchronize)。 开发者不需要手动执行UPDATE。将对象从持久(Persistent)状态变成瞬时(Transient)状态同样也不需要手动执行DELETE语句。
游离(Detached) - 与持久(Persistent)对象关联的Session被关闭后,对象就变为游离(Detached)的。 对游离(Detached)对象的引用依然有效,对象可继续被修改。游离(Detached)对象如果重新关联到某个新的Session上, 会再次转变为持久(Persistent)的(在Detached其间的改动将被持久化到数据库)。 这个功能使得一种编程模型,即中间会给用户思考时间(user think-time)的长时间运行的操作单元(unit of work)的编程模型成为可能。
我们称之为应用程序事务,即从用户观点看是一个操作单元(unit of work)。
Hibernate中对象的游离状态是指Session关闭之后,持久化对象变成离线对象,离线对象就不能同数据库同步,也不再受Hibernate管理。操作 处于游离态对象 经常会报 session已关闭的错误。
相关文章推荐
- 汇编语言学习笔记(3)——寄存器,内存访问
- EPUB弹出窗口式脚注
- webapp 外部css的引用
- C#代码实现邮箱验证C#中及一些常用的正则表达式
- 实验三 敏捷开发与XP实践(改)
- Java NIO--初步认识
- JavaScript学习笔记(二)
- Java常用的 API
- [leetcode] Maximal Square
- 山一程,水一程,身向榆关那畔行,夜深千帐灯。
- C/C++字符串与字符数组
- 网络通信
- JAVA方法值传递OR引用传递
- 2015/6/4 深圳--存钱罐(存钱网)
- 从哪里开始
- SpeechClassifier API 与端点检测
- P124.45
- 评课-软件工程
- UIImageView 基本用法
- Linux Socket 编程与 TCP/UDP协议流程