`
gary0416
  • 浏览: 331367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java对象在Hibernate中的状态

阅读更多

java对象在Hibernate中的状态

1.         临时状态(transient):刚用new语句创建,还没有被持久化,并且不处于Session缓存中.临时对象.

2.         持久化状态(persistent):已经被持久化,并且加入到Session的缓存中.持久化对象.

3.         删除状态(removed):不再处于Session的缓存中,并且Session已经计划将其从数据库中删除,被删除对象.

4.         游离状态(detached):已经被持久化,但不再处于Session的缓存中.游离对象.

 

临时对象的特征

1.         使用代理主键的情况下,OID通常为null.

2.         不处于Session的缓存中,即不被任何一个Session实例关联.

3.         在数据库中无对应记录.

在以下状态下,Java对象进入临时状态

1.  当通过new语句刚创建一个Java对象,此时处于临时状态,不和数据库中的任何记录对应.

2.  Hibernate配置文件中的hibernate.use_identifier_rollback属性为true的情况下,Sessiondelete()方法能使一个持久化对象或游离对象转变为临时对象.

 

持久化对象的特征

1.         OID不为null.

2.         位于一个Session实例的缓存中,即总是被一个Session实例关联.

3.         持久化对象和数据库中的相关记录对应.

4.         Session在清理缓存时,会根据持久化对象的属性变化,同步更新数据库.

使Java对象进入持久化状态

1.         Sessionsave()方法把临时对象转变为持久化对象.

2.         Sessionload()get()方法返回的对象总是处于持久化状态.

3.         Querylist()方法返回的List集合中存放的都是持久化对象.

4.         Sessionupdate(),saveOrUpdate(),lock()方法使游离对象转变为持久化对象.

5.         当一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存时会把这个临时对象也转变为持久化对象.

 

被删除对象的特征

1.         OID不为null.

2.         从一个Session实例的缓存中删除.

3.         被删除对象和数据库中的相关记录对应.

4.         Session已经计划将其从数据库中山喊出.

5.         Session在清理缓存时,会执行SQL DELETE语句,删除数据库中的相应记录.

6.         一般情况下,应用程序不应该再使用被删除的对象.

以下情况Java对象进入删除状态

1.         Hibernate配置文件中的hibernate.use_identifier_rollback属性取默认值false的情况下,Sessiondelete()方法吧持久化对象及游离对象转变为被删除对象.

2.         当一个持久化对象A关联一个持久化对象B,在允许级联删除的情况下,Session删除持久化对象A,会级联删除持久化对象B,使得持久化对象Ahead持久化对象B都进入删除状态.

 

游离对象特征

游离对象有以下特征

1.         OID不为null.

2.         不再位于Session的缓存中,即不被Session关联.

3.         游离对象是由持久化对象转变过来的,因此在数据库中可能还存在与它对应的记录(前提是没有其它程序删除这条记录)

Session的以下方法时持久化对象转变为游离对象

1.         当调用Sessionclose()方法时,Session的缓存被清空,缓存中所有持久化对象都变为游离对象.如果在应用程序中没有引用变量引用这些游离对象,它们就会结束生命周期.

2.         Sessionevict()方法能够从缓存中清除一个持久化对象,使它变为游离对象.

3.         Sessionclear()方法能够清除缓存中的所有持久化对象.

 

1
0
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate 对象的状态检索

    本人在厦门邦初培训时候 使用的快速入门精简文档 ...对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。 延迟装载 迫切左外链接 HQL检索方式 QBC检索方式 本地SQL检索方式

    Java面试题57.hibernate对象状态及其转换.mp4

    Java面试题57.hibernate对象状态及其转换.mp4

    Hibernate持久化对象的生命周期

    Hibernate持久化对象的生命周期 持久化对象的状态: 瞬时对象(Transient Objects)持久化对象(Persist Objects)、离线对象(Detached ...在Hibernate应用中Java对象的状态 Session的保存、更新、删除、查询方法:

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.3 Java对象在Hibernate持久化层的状态  8.3.1 临时对象的特征  8.3.2 持久化对象的特征  8.3.3 被删除对象的特征  8.3.4 游离对象的特征  8.4 Session接口的详细用法  8.4.1 Session的save()和persist()...

    Hibernate工作原理及为什么要用

    在 Hibernate 中,Java 对象可以处于三种状态: 1. 临时状态(transient):特征是不处于 Session 缓存中,数据库中没有对象记录。Java 对象可以通过 new 语句刚创建一个对象时或调用 Session 的 delete() 方法,从...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 ...

    对象-关系映射—Hibernate 培训 (中文)

    对象-关系映射—Hibernate 培训 (中文) 目录 一、持久化层-O/R Mapping 二、Hibernate入门 三、Hibernate映射申明(Mapping declaration...四、持久化对象的状态和生命周期 五、Hibernate查询 六、Hibernate最佳实践

    JDBC与Hibernate区别

    ◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。 JDBC与Hibernate读取性能 ...

    精通Hibernate:对象持久化技术第二版part3

    本章站在持久化层的角度,Java对象在生命周期中可处于临时状态、持久化状态、删除状态和游离状态。处于持久化状态的Java对象位于一个Session实例的缓存中,Session能根据这个对象的属性变化来同步更新数据库。 8.1 ...

    57.hibernate对象状态及其转换.avi

    java工程师

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    Hibernate中文详细学习文档

    8.2. 在集合中出现的依赖对象 (Collections of dependent objects) 8.3. 组件作为Map的索引(Components as Map indices ) 8.4. 组件作为联合标识符(Components as composite identifiers) 8.5. 动态组件 ...

    hibernate3.2中文文档(chm格式)

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    hibernate 3中的缓存小结

    当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象...

    Hibernate实战(第2版 中文高清版)

     1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不匹配   1.2.1 粒度问题   1.2.2 子类型问题   1.2.3 同一性问题   1.2.4 与关联相关的问题   1.2.5 数据导航的问题   ...

    最全Hibernate 参考文档

    10.1. Hibernate对象状态(object states) 10.2. 使对象持久化 10.3. 装载对象 10.4. 查询 10.4.1. 执行查询 10.4.1.1. 迭代式获取结果(Iterating results) 10.4.1.2. 返回元组(tuples)的查询 10.4.1.3. 标量(Scalar)...

Global site tag (gtag.js) - Google Analytics