在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
分享到:
相关推荐
4. **映射文件**:在使用ORM(Object-Relational Mapping)框架时,PO对象与数据库表的映射信息通常会写在XML配置文件或注解中。例如,在Hibernate中,可以使用`@Entity`注解来标记一个类为数据库实体,并用`@Id`...
在IT行业中,自身关联是一种常见的数据库设计技巧,用于表示一个实体可以与其...在实际开发中,这种设计允许构建复杂的数据结构,如树形菜单或权限系统,同时PO到VO的转换是数据层和业务层交互中常见的数据处理方式。
2. **VO与PO的区别**: - **VO**是值对象,更侧重于业务逻辑层面;而**PO**是有状态的,每个属性代表其当前的状态。 - **VO**的属性根据当前业务逻辑的不同而不同,与业务逻辑紧密相关;而**PO**的属性与数据库表...
### 六步骤轻松完成Hibernate中生成VO.xml #### 第一步:下载Middlegen-Hibernate Middlegen-Hibernate是一款强大的代码生成工具,主要用于基于数据库表结构自动生成Java实体类(Value Object, VO)以及对应的...
在Hibernate中,代理类(Proxy)是其实现懒加载(Lazy Loading)机制的核心组件之一。懒加载是一种优化技术,用于延迟对象的初始化直到真正需要使用该对象时。 在Hibernate框架中,实体类的实例通常对应数据库中的...
在Java的ORM框架Hibernate中,实体管理是其核心功能之一,而实体的状态管理则是理解Hibernate工作原理的关键。本文将深入探讨Hibernate中的实体状态及其转换,帮助开发者更好地掌握如何有效地使用Hibernate进行数据...
hibernate中session对象的状态详解
在ORM(Object-Relational Mapping)框架如Hibernate中,PO常被用来作为与数据库交互的对象。 2. POJO(Plain Old Java Object,普通旧式Java对象) POJO是一个普通的Java类,没有特定的约束或框架依赖。它被广泛...
POJOs被广泛用于表示业务实体,可以作为ORM(对象关系映射)框架如Hibernate、MyBatis中的数据模型。 2. PO(Persistent Object):持久化对象,正如其名,是用来表示数据库中表的行的Java对象。当数据库表的一行被...
Java开发中,PO(Persistant Object)、VO(Value Object)、BO(Business Object)、DAO(Data Access Object)和POJO(Plain Old Java Object)是常见的五个概念,它们在软件设计和开发中扮演着不同的角色。...
**持久态**是指对象已经被Hibernate管理,并且其状态与数据库中的记录同步。一旦对象被Session保存(save()或saveOrUpdate()),它就进入了持久态。在持久态中,对对象的任何修改都会自动反映到数据库中,无需手动...
在Hibernate框架中,对象的状态管理和保存机制是其核心特性之一,它们直接影响到数据的持久化操作。以下是关于Hibernate中对象的三种状态以及保存方法的详细分析: 1. **对象的三种状态** - **瞬态(Transient)**...
在Java的持久化框架Hibernate中,对象的状态管理是其核心特性之一。理解并掌握对象的三种状态对于开发高效、稳定的数据库应用至关重要。本篇将详细阐述Hibernate中的瞬时态、持久态和脱管态,以及它们之间的转换。 ...
在Java的持久化框架Hibernate中,对象的状态是理解其工作原理的关键部分。这些状态决定了对象与数据库之间的关联程度,以及Hibernate如何处理对象的生命周期。以下是Hibernate对象的三种主要状态及其特点: 1) 临时...
在 Hibernate 中,对象的状态管理是至关重要的,因为它直接影响到对象如何与数据库交互。以下是 Hibernate 中对象的三种状态以及相关的保存方法: 1. **瞬时对象(Transient Objects)** - 当使用 `new` 关键字...
在 Hibernate 中,对象有三种不同的状态,这些状态决定了对象与数据库之间的关联程度以及如何进行数据操作。理解这些状态对于有效地使用 Hibernate 至关重要。 1. **瞬时态(Transient)**: - 瞬时态的对象是刚刚...
7. **实体生命周期**:了解Hibernate如何处理对象的创建、更新、删除等状态变化。 8. **性能调优**:包括批处理、连接池配置、查询优化等方面的知识。 9. **拦截器和事件监听器**:学习如何自定义行为,比如在对象...
12. **实体生命周期**:阐述了Hibernate中实体的生命周期状态(瞬时、持久化、脱管和临时),以及状态转换和事件监听。 13. **性能优化**:提供了一些最佳实践和技巧,如批处理、延迟加载、缓存配置等,以提高...
会话是Hibernate中与数据库交互的主要接口,它负责管理实体的状态。会话具有瞬时性、持久性和临时性三种状态。通过`Session`对象,我们可以进行增删改查(CRUD)操作。例如,使用`save()`或`saveOrUpdate()`方法保存...
4. **Session与Transaction**:在Hibernate中,Session是与数据库交互的主要接口,而Transaction则负责管理事务。手册会解释Session的生命周期、查询操作、事务的提交与回滚,以及如何处理并发问题。 5. **HQL与...