您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

关于 PO 和 VO

在这里插入图片描述(1)O/R Mapper 对象/关系 映射
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是 将对象与关系数据库绑定,用对象来表示关系数据。定义好所有的 mapping 之后,这个 O/R Mapper 可以帮我们做很多的工作。通过这些 mappings,这个 O/R Mapper 可以生成所有的关于对象保存,删除,读取的 SQL 语句,我们不再需要写那么多行的 DAL 代码了。在 O/R Mapping 的世界里,有两个基本的也是重要的概念需要了解,即 VO,PO:VO 值对象(Value Object),PO,持久对象(Persisent Object)它们是由 一组属性和属性的 get 和 set 方法 组成。从结构上看,它们并没有什么不同的地方。但从其意义和本质上来看是完全不同的。(2)PO(persistant object) 持久对象在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的 Java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合。PO 中应该不包含任何对数据库的操作。最形象的理解:就是一个 PO 就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。PO 的生命周期:是向数据库中添加新数据时创建,删除数据库中数据时削除的。并且它只能存活在一个数据库连接中,断开连接即被销毁。PO 是有状态的,每个属性代表其当前的状态。它是物理数据的对象表示。使用它,可以使我们的程序与物理数据解耦,并且可以简化对象数据与物理数据之间的转换。PO 的属性是跟数据库表的字段一一对应的。PO 对象需要实现序列化接口。Hibernate 里的实体 bean 就是个 PO,也叫 POJO;(2)VO(value object) 值对象VO 是值对象,精确点讲它是 业务对象,是存活在业务层的,是业务逻辑使用的,它存活的目的就是 为数据提供一个生存的地方。VO 的属性是根据当前业务的不同而不同的,也就是说,它的每一个属性都一一对应当前业务逻辑所需要的数据的名称。通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 。用 new 关键字创建,由 GC 回收的。!! 不同于 ViewObject 表现层对象ViewObject 主要对应界面显示的数据对象。对于一个 WEB 页面,或者 SWT、SWING 的一个界面,用一个 VO 对象对应整个界面的值。PO 是持久化对象,它只是将物理数据实体的一种对象表示,为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。VO 是什么?它是值对象,准确地讲,它是业务对象,是生活在业务层的,是业务逻辑需要了解,需要使用的,再简单地讲,它是概念模型转换得到的。首先说 PO 和 VO 吧,它们的关系应该是相互独立的,一个 VO 可以只是 PO 的部分,也可以是多个 PO 构成,同样也可以等同于一个 PO(当然我是指他们的属性)。正因为这样,PO 独立出来,数据持久层也就独立出来了,它不会受到任何业务的干涉。又正因为这样,业务逻辑层也独立开来,它不会受到数据持久层的影响,业务层关心的只是业务逻辑的处理,至于怎么存怎么读交给别人吧!不过,另外一点,如果我们没有使用数据持久层,或者说没有使用 Hibernate,那么 PO 和 VO 也可以是同一个东西,虽然这并不好。


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进