Hibernate的对象的3种状态(转)

转载 2007年09月16日 00:27:00
Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。
  •           瞬时态

          由new命令开辟内存空间的java对象,

         eg. Person person = new Person("amigo", "女");

          如果没有变量对该对象进行引用,它将被java虚拟机回收。

          瞬时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系,在Hibernate中,可通过session的save()或saveOrUpdate()方法将瞬时对象与数据库相关联,并将数据对应的插入数据库中,此时该瞬时对象转变成持久化对象。

  •          持久态

          处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识。如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联。

         当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下。

         持久对象具有如下特点:

         1. 和session实例关联;

         2. 在数据库中有与之关联的记录。

  • 脱管态

          当与某持久对象关联的session被关闭后,该持久对象转变为脱管对象。当脱管对象被重新关联到session上时,并再次转变成持久对象。

         脱管对象拥有数据库的识别值,可通过update()、saveOrUpdate()等方法,转变成持久对象。

         脱管对象具有如下特点:

         1.    本质上与瞬时对象相同,在没有任何变量引用它时,JVM会在适当的时候将它回收;

         2.    比瞬时对象多了一个数据库记录标识值。

 

Hibernate实体类对象生命周期的3种状态

Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached).处于持久态的对象也称为PO(PersistenceObject),...
  • wangzff
  • wangzff
  • 2014年09月22日 14:43
  • 3661

Hibernate对象的3种状态

Hibernate对象的3种状态: 1,临时状态(Transient): 与数据库没有对应,跟Session没有关联。 一般是新new出的对象。 2,持久化状态(Persistent):...
  • A__17
  • A__17
  • 2015年09月23日 15:36
  • 767

Hibernate学习总结之对象的4种状态

http://blog.csdn.net/cpp1781089410
  • cpp1781089410
  • cpp1781089410
  • 2015年11月23日 20:57
  • 1053

Hibernate 3中状态之间的转换

Hibernate 3中状态之间的转换在hibernate中 不同的持久化操作会导致对象的状态的改变 如下图所示:使用new关键字构建的对象是瞬时状态的 1、瞬时状态转换为持久状态 使用sessi...
  • qq_28562059
  • qq_28562059
  • 2016年09月01日 15:30
  • 475

Hibernate中Entity对象状态的检测

根据与持久化上下文的联系不同,Hibernate应用中的Entity对象可能处于不同的状态,那么持久化上下文如何检测Entity对象的状态呢?持久化上下文提供了专门的方法检测给定的Entity对象的状...
  • taiyangdao
  • taiyangdao
  • 2016年06月17日 14:41
  • 993

Hibernate Session操纵的对象状态转换图

Session 的 save() 方法 Session 的 save() 方法使一个临时对象转变为持久化对象 Session 的 save() 方法完成以下操作: 把 News 对象加入到 ...
  • u013510614
  • u013510614
  • 2016年01月16日 14:29
  • 397

iOS Newsstand Tutorial(IOS报刊亭教程)

iOS Newsstand Tutorial(IOS报刊亭教程)
  • sinat_19587549
  • sinat_19587549
  • 2015年02月06日 17:59
  • 1226

Hibernate对象的三种状态区别以及save等几种方法的区别

Hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为 PO(Persistence Objec...
  • yuan7032
  • yuan7032
  • 2013年08月23日 11:47
  • 860

Hibernate中对象的三种状态,以及三种状态间的转化方法

在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概念,后来被别人问到了,说是面试题,才发现它是重要的。对于需要持久化的JAVA对象,在它...
  • fangleijiang
  • fangleijiang
  • 2014年09月12日 10:55
  • 1758

Hibernate持久化对象的状态及状态之间的转换

hibernate持久化对象的三种状态,瞬态,持久化,托管 ; 三种状态之间的的状态转换图 ; save(),persist()的区别与联系 ; load() 和 get()方法的区别与联系; u...
  • liuxins
  • liuxins
  • 2016年04月03日 14:44
  • 2152
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate的对象的3种状态(转)
举报原因:
原因补充:

(最多只允许输入30个字)