SUN认证

Hibernate应用中Java对象的状态类型

时间:2024-07-23 06:16:31 SUN认证 我要投稿
  • 相关推荐

关于Hibernate应用中Java对象的状态类型

  临时状态(Transient):也叫瞬时状态。new出来的对象,没有被持久化处理,不处于Session缓存中的对象

  持久化状态(Persistent):已经被持久化,加入到Session的缓存中

  游离状态(Detached):也叫脱管状态。已经被持久化,但是不处在Session缓存中

  ⑴临时对象的特征:

  不处于Session缓存中(不被任何一个Session实例关联)

  在数据库中没有对应的记录

  进入临时状态的条件:

  new一个Java对象,他处于临时状态,不和数据库任何记录关联

  Session的delete方法能够是一个持久化对象或游离对象转变为临时状态;对于游离对象,

  delete方法从数据库中删除与它对应的记录;对于持久化对象,delete方法从数据库中删除与它对应的记录,

  并把它从session缓存中删除

  ⑵持久化对象的特征:

  在一个Session实例的缓存中(与一个Session关联)

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

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

  进入持久化状态的条件

  session的save方法

  session的load和get方法返回的对象都是处于持久化状态

  session的find方法返回的List中存在的对象都是处于持久化状态

  session的update、saveOrUpdate和lock方法使得游离对象转换为持久化状态

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

  ⑶游离对象的特征:

  不再位于session缓存中(游离对象不被Session关联)

  游离对象是从持久化对象转变过来的,因此在数据库中可能还存在与其对应的记录

  游离对象与临时对象的区别在于:前者是由持久化对象转变过来的,前者在数据库中还存在与之对应的记录,

  而后者在数据库中没有与之对应的记录;

  进入游离状态的条件

  当调用session的close方法的时候,session缓存被清空,缓存中的所有持久化对象都变为游离状态。如果此时再没有其它变量引用的时候,其生命周期结束

  session的evict方法能够从缓存中删除一个持久化对象,使它变为游离状态。如果内存中存在大量的对象的时候,可以通过这个方法来删除缓存中的对象(不建议使用这个方法,还是使用查询的方法和常规方法来处理对象在内存 中的深度)

【Hibernate应用中Java对象的状态类型】相关文章:

Java中基本数据类型与应用08-23

Java内存溢出的类型06-07

如何传输Java对象07-29

Java标准类库中类型怎么相互转化10-12

java运行常见异常类型07-11

Java基本数据类型07-09

java面向对象编程题库及答案09-24

Java面向对象设计的经验原则08-31

小学应用题类型10-15

电脑硬盘的几种应用类型08-18