在Hibernate中,对象有三种状态:临时状态、持久状态和游离状态。
临时状态:当new一个实体对象后,这个对象处于临时状态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被jre垃圾回收机制回收。这个对象所保存的数据与数据库没有任何关系,除非通过Session的save或者SaveOrUpdate把临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。
例如:Emp e=new Emp(); //创建临时对象
e.setEmpno((long) 8888);
e.setEName("mike");
...
EmpDAO d=new EmpDAO();
d.save(e); //持久化
...
持久状态:持久化对象的实例在数据库中有对应的记录,并拥有一个持久化表示(ID)。对持久化对象进行delete操作后,数据库中对应的记录将被删除,那么持久化对象与数据库记录不再存在对应关系,持久化对象变成临时状态。
持久化对象被修改变更后,不会马上同步到数据库,知道数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。
例如:
Emp e=new Emp(); //创建了临时的对象
EmpDAO edao= new empDAO();
e=edao.findbyEmpno((long) 7786); //使对象与数据库记录对应,从而持久化
e.setEname("新的名字"); //修改了持久化对象,使之处于 Dirty
......
edao.saveorupdate(e); //保存,但是仍然 Dirty
tran.commit(); //提交,实现与数据库同步,不再Dirty
......
游离状态:当Session进行了Close、Clear或者evict后,持久化对象虽然拥有持久化标识符和与数据库对应记录一致的值,但是因为会话已经消失,对象不在持久化管理之内,所以处于游离状态(也叫:脱管状态)。游离状态的对象与临时状态对象是十分相似的,只是它还含有持久化标识。
其中,持久化状态的对象,简称为:PO
而临时状态和游离状态的对象,简称为: VO
分享到:
相关推荐
在 Hibernate 中,持久化层的游离状态(Detached State)是指对象已经从 Session 中移除,但仍存在于应用程序的内存中。在这种状态下,对象与数据库的关联被断开,对对象的修改不会自动同步到数据库。如果需要更新...
**游离状态(Detached) -> 临时状态(Transient)**:当Session关闭后,或者主动清除实体的ID属性,或者将其ID设置为数据库中不存在的主键,游离状态的对象就会变成临时状态,与数据库的联系断裂。 **持久化状态...
- **持久化状态 → 游离状态**:当关闭 Session 或调用 `evict()` 方法时,持久化对象会变为游离状态。 - **游离状态 → 持久化状态**:可以通过再次调用 `save()`、`persist()` 或 `merge()` 方法将游离对象转变为...
3. **游离状态**:当Session关闭或事务结束后,持久化对象会变成游离状态。尽管这些对象不再受Session管理,但它们仍保留着之前从数据库加载的数据,除非显式地进行更新操作,否则不会触发与数据库的交互。 #### 二...
在Java的持久化框架Hibernate中,对象存在三种不同的状态,分别是持久态(Persistent)、自由态(Transient)和游离态(Detached)。这三种状态分别对应了对象与数据库的关联程度,理解它们对于高效地使用Hibernate...
包含一个PlayerState状态抽象类,然后有攻击类,防御,跳跃,下蹲,游离状态等不同的状态类来实现对应的方法,同时还有状态机管理类来管理控制各个不同的状态切换。 代码逻辑很简单,也有一些简单的注释,看不懂的...
在本文中,我们通过高效液相色谱(HPLC)和分光光度法[SF]确定游离核苷酸的组成和含量,比较了识别肉类热状态的方法。 使用了高纯度的参考物质:游离核苷酸-ATP,ADP,AMP,IMP和核苷-肌苷和次黄嘌呤。 实验已经...
3) 脱管或游离状态(Detached State): 当Session关闭,或者使用`session.evict()`方法显式地将对象从Session缓存中移除,对象将进入脱管状态。在脱管状态下,对象不再受Session管理,即使对象的属性发生改变,这些...
`clear()`方法会清除实体管理器当前上下文中所有的托管实体对象,使它们变为游离状态。需要注意的是,未及时提交到数据库的更改将会丢失。因此,除非确实需要释放资源,否则应谨慎使用`clear()`方法。 ### 实体...
首先,游离氨基酸指的是存在于植物体内的氨基酸分子,它们不以蛋白质的形式结合存在,而是以游离的状态存在。在植物生理过程中,游离氨基酸不仅仅是蛋白质合成的前体,它们还参与调节渗透压、储藏氮源、信号传导等...
【脂肪变性】是指肝脏中脂肪异常积累导致的病理状态,常见于非酒精性脂肪肝病(NAFLD)。 研究人员【董文乐】和【成向荣】通过【GSH功能化磁珠】技术,特异性地敲除小黑药中的亲电成分,以建立一个基于【混合游离...
Hibernate将对象的状态划分为四种:临时状态、持久化状态、游离状态和删除状态。这些状态反映了对象与数据库记录之间的关系,有助于理解Hibernate如何管理和操作数据。 1. **临时状态(Transient State)**: 当一...
3. **游离状态(Detached)**:如果一个持久化对象的`Session`被关闭,或者对象从`Session`的缓存中移除,那么它就变成了游离状态。尽管对象与数据库中的记录仍然有关联,但它不再受Hibernate的直接管理。如果需要...
双离合插销游离式的设计则意味着该离合器具有两个独立的工作状态,可以实现锁舌的快速切换,同时在特定情况下,如断电或紧急情况,能保持锁具的安全状态。 双离合设计通常是指离合器有两个不同的工作模式:常闭(NC...
- Detached(游离):持久化对象在Session关闭后,就会变为游离状态。这时,对象与Session断开,但其仍然包含数据库中的数据副本。更新游离状态对象不会直接影响数据库,除非调用特定的更新方法。 2. Hibernate的...
本篇文章将详细阐述 Hibernate 中对象的三种状态——临时状态、持久化状态和游离状态,以及 Session 缓存的工作原理。 1. Session 缓存及作用 Session 是 Hibernate 提供的一个接口,它充当了应用程序与数据库之间...
本人在厦门邦初培训时候 使用的快速入门精简文档 ...对象的临时状态、持久状态和游离状态 用session的update()方法使游离对象转变为持久化对象。 延迟装载 迫切左外链接 HQL检索方式 QBC检索方式 本地SQL检索方式
对象有三种主要状态:临时状态(Transient)、持久状态(Persistent)和游离状态(Detached)。理解这三种状态对于有效地使用Hibernate至关重要。 1. **临时状态(Transient)** - 当我们使用`new`关键字创建一个...
对象在 Hibernate 中可以处于三种状态:临时状态(Transient)、持久化状态(Persistent)和游离状态(Detached)。理解这些状态对于有效使用 Hibernate 进行数据操作至关重要。 1. 临时状态(Transient): 当...