理解PO类在数据层和VO类在逻辑层的区别
对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是值对象,精确点讲它是业务对象,它存活的目的就是为数据提供一个生存的地方.
来源:(http://blog.sina.com.cn/s/blog_5739dba70100cmvv.html) - 理解PO类在数据层和VO类在逻辑层的区别_KungaChark_新浪博客
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对象,但各自有不同的用途和特点。理解它们的区别对于...
总的来说,"vopo转换工具类及所需jar"是一个简化vopo数据格式转换的解决方案,它包含了一个数据验证助手和一个主要的转换器类,以及一系列的外部依赖库。通过这个工具,开发者可以在处理vopo数据时提高效率,减少...
- 在实际开发中,PO对象常用于封装数据层查询或修改的结果,便于在其他层(如业务逻辑层或表现层)使用。 #### 三、VO (Value Object) 值对象 **定义:** - VO是一种只包含数据属性的简单Java对象,通常用于封装...
在Java开发中,POJO和VO类经常被用于数据传输和持久化层,它们是业务逻辑和数据模型之间的桥梁。此工具能够根据数据库表结构自动创建对应的Java类,从而减轻了手动编写这些类的工作量。 POJO类通常代表数据库中的一...
与 PO 不同,VO(Value Object)是值对象,它是业务对象,是存活在业务层的,是业务逻辑使用的。VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。 PO ...
在Java开发中,我们经常会遇到各种各样...例如,PO和DAO一起用于数据持久化,BO处理业务逻辑,而VO和DTO则专注于数据的传输和展示。了解这些术语,对于提升代码质量、提高团队沟通效率以及优化系统设计都具有重要意义。
VO在Web上传递中也可以和DTO(数据传输对象)混淆,但它们之间有一些细微的区别。 TO(Transfer Object)数据传输对象 TO是Java中的数据传输对象,在应用程序不同关系之间传输的对象。TO通常用于数据的传输和交换,...
5. DTO(Data Transfer Object):数据传输对象,主要用途是在服务层和表示层之间传输数据。DTO不包含任何业务逻辑,只是简单地封装数据,以避免跨层的数据耦合。在分布式系统或服务之间进行数据交换时,DTO是常用的...
在IT行业中,自身关联是一种常见的数据库设计技巧,用于表示一个实体可以与其...在实际开发中,这种设计允许构建复杂的数据结构,如树形菜单或权限系统,同时PO到VO的转换是数据层和业务层交互中常见的数据处理方式。
在IT行业中,尤其是在Java开发领域,我们经常遇到“VO”、“BO”和“PO”这样的术语,它们分别代表了Value Object、Business Object和Persistent Object。理解这三个概念对于编写清晰、可维护的代码至关重要。 首先...
值对象(Value Object,简称VO),通常用于业务层之间的数据传递,与PO类似,它也仅包含数据。但是,VO更倾向于抽象出具体的业务对象,可以根据实际业务需求选择是否与数据库表进行对应。在Web开发中,VO经常被用作...
Java开发中,PO(Persistant Object)、VO(Value Object)、BO(Business Object)、DAO(Data Access Object)和POJO(Plain Old Java Object)是常见的五个概念,它们在软件设计和开发中扮演着不同的角色。...
本文将详细介绍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)和平凡的...
VO的作用在于封装业务逻辑所需的数据,它可以是由FormBean转化而来,也可以直接由PO转换得到,但其结构应该符合业务规则,而不是简单地复制Web层或持久层的数据结构。在用户查询信息的例子中,VO可能包含一个全名...
在传统的J2EE架构中,VO和PO通常需要在业务层进行转换,以保持层间解耦。然而,由于Hibernate的强大功能,PO可以直接用作VO,简化了数据转换的过程。 ActionFormBean和PO之间的差异在于,ActionFormBean是Web交互的...
它们之间的关系是:BO 封装业务逻辑,调用 DAO 方法,结合 PO 和 VO 进行业务操作。DAO 中包含了各种数据库的操作方法,通过它的方法,结合 PO 对数据库进行相关的操作。DTO 和 TO 是用于传输数据的对象,可以减少...
VO,值对象,主要用于在不同的层间传递数据,特别是在表现层与业务逻辑层之间。VO对象通常不具有业务逻辑,而是作为数据载体,用于封装数据并在不同组件间进行传输。与PO不同,VO更侧重于表示层的数据展示需求,其...
在Java开发中,特别是在企业级应用领域,有几种常见的对象模型,它们分别是PO(Persistent Object)、VO(Value Object)、DAO(Data Access Object)、BO(Business Object)和POJO(Plain Old Java Object)。...