网上的对PO和VO区别的解释:
“ VO,值对象(Value Object),
PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成。Hibernate纳入其实体容器(Entity Map)的对象,它代表了与数据库中某条记录对应的Hibernate实体,PO的变化在事务提交时将反应到实际数据库中。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。
1.VO是用new关键字创建,由GC回收的。
PO则是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。
2.VO是值对象,精确点讲它是业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是为数据提供一个生存的地方。(数据直接在VO上)
PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。(对象和数据分开但是互相转换)
3.VO的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。(与业务的数据有关)
PO的属性是跟数据库表的字段一一对应的。(与数据库的字段数据有关)
PO对象需要实现序列化接口。
”
我想对第二点再深入一点,即 PO则是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示.
VO是值对象,精确点讲它是业务对象,它存活的目的就是为数据提供一个生存的地方.
hibernate中利用PO类对数据库的操作如下(Emp为PO类):
Emp emp = (Emp) session.load(Emp.class, "005");
Emp.class语句的意思是:Emp已经被编译成.class文件后,再用Emp.class的方法从java虚拟机中获取代表Emp类的字节码数据的Class实例对象。
就是说hibernate对PO的操作是对编译后的字节码文件进行操作的,而字节码.class文件是通过映射文件Emp.hbm.xml对数据库的数据封装后被类装载器放到HashTable中,供java虚拟机调用,也就是如上文所说的“VO是物理数据的对象表示”.当事务提交时,通过执行SQL的inset,update,delete语句把内存的状态同步到数据库中。
而VO类(BookInfo 是VO类):
public byte[] getCover(BookInfo book) throws SQLException {
BookInfo book1 = (BookInfo) sqlMap.queryForObject("getCover",book);
return book1.getCover();
}
ibatis对VO类的操作是对BookInfo的.java文件操作,而不是对.class文件操作,所以VO是在业务层的,它是业务对象,值是随着逻辑的改变而改变的。
分享到:
相关推荐
在Java开发领域,尤其是涉及到Spring框架以及数据持久化时,我们常常会遇到“PO”(Plain Old Java Object)和“VO”(Value Object)这两个概念。它们都是Java对象,但各自有不同的用途和特点。理解它们的区别对于...
在IT行业中,我们经常需要处理各种...通过这个工具,开发者可以在处理vopo数据时提高效率,减少错误,同时也能更好地理解和控制转换过程。在实际应用中,理解并熟练使用这类工具,对于提升开发效率和代码质量至关重要。
与 PO 不同,VO(Value Object)是值对象,它是业务对象,是存活在业务层的,是业务逻辑使用的。VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 PO ...
5. DTO(Data Transfer Object):数据传输对象,主要用途是在服务层和表示层之间传输数据。DTO不包含任何业务逻辑,只是简单地封装数据,以避免跨层的数据耦合。在分布式系统或服务之间进行数据交换时,DTO是常用的...
- 在实际开发中,PO对象常用于封装数据层查询或修改的结果,便于在其他层(如业务逻辑层或表现层)使用。 #### 三、VO (Value Object) 值对象 **定义:** - VO是一种只包含数据属性的简单Java对象,通常用于封装...
在Java开发中,我们经常会遇到各种各样...例如,PO和DAO一起用于数据持久化,BO处理业务逻辑,而VO和DTO则专注于数据的传输和展示。了解这些术语,对于提升代码质量、提高团队沟通效率以及优化系统设计都具有重要意义。
VO在Web上传递中也可以和DTO(数据传输对象)混淆,但它们之间有一些细微的区别。 TO(Transfer Object)数据传输对象 TO是Java中的数据传输对象,在应用程序不同关系之间传输的对象。TO通常用于数据的传输和交换,...
在IT行业中,尤其是在Java开发领域,我们经常遇到“VO”、“BO”和“PO”这样的术语,它们分别代表了Value Object、Business Object和Persistent Object。理解这三个概念对于编写清晰、可维护的代码至关重要。 首先...
值对象(Value Object,简称VO),通常用于业务层之间的数据传递,与PO类似,它也仅包含数据。但是,VO更倾向于抽象出具体的业务对象,可以根据实际业务需求选择是否与数据库表进行对应。在Web开发中,VO经常被用作...
本文将详细介绍VO (View Object)、DTO (Data Transfer Object)、BO (Business Object)、ORM (Object Relational Mapping)、DAO (Data Access Object)、Entity (实体)、DO (Data Object)、PO (Persistent Object)、...
本文将深入探讨五种常见的Java对象类型:持久化对象(Persistent Object,简称PO)、值对象(Value Object,简称VO)、数据访问对象(Data Access Object,简称DAO)、业务对象(Business Object,简称BO)和平凡的...
Java 中 PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn 的理解 PO(Persistent Object):持久对象,指的是在 O/R Mapping 中将对象与关系数据库绑定的对象。PO 是由一组属性和属性的 get 和 set 方法组成。它...
VO,值对象,主要用于在不同的层间传递数据,特别是在表现层与业务逻辑层之间。VO对象通常不具有业务逻辑,而是作为数据载体,用于封装数据并在不同组件间进行传输。与PO不同,VO更侧重于表示层的数据展示需求,其...
- VO主要应用于业务逻辑层和视图层(控制层和前端页面)的数据交换。控制层通常会将VO对象转化为JSON传递给前端页面。 - PO是MyBatis生成的对象,通常继承自`PoBase`类,可通过泛型实现当前PO对象的`cloneSelf`方法...
Java代码生成器就是为了解决这个问题而设计的,它可以自动生成PO(Plain Old Java Object)、VO(Value Object)、DAO(Data Access Object)和Service层的Java类。 1. PO(Plain Old Java Object):PO对象通常...
1. **VO (Value Object)**:值对象,主要用于封装数据,在业务逻辑层与展示层之间传递数据。VO一般用于展示层,如前端页面显示的数据。 2. **BO (Business Object)**:业务对象,用于封装业务逻辑,包含了一些业务...
- **Web 开发**:在 JSP 中,JavaBean 常被用来封装业务逻辑或数据,实现视图层和逻辑层的分离。 - **桌面应用**:用于创建可复用的控件或组件。 - **企业级应用**:在服务器端处理复杂的业务流程。 #### 二、DTO...
### MVC设计模式详解 #### 一、MVC设计模式概念 MVC模式,全称Model-View-Controller(模型-视图-控制器)模式,是一种广泛应用于软件...同时,了解POJO和JavaBean的区别有助于更好地理解MVC架构中的数据处理逻辑。