我一直很矛盾:是否PO可以用在商业逻辑层,当作VO使用;还是将两者分开。在许多论坛上,这两者之争也很激烈。所以今天我打算把我的想法写下来。

首先,java有几种对象(PO,VO,DAO,BO,POJO)

一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。

二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.

有一种观点就是:PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。如果将PO用在各个层中就相当于我们使用全局变量,我们知道在OO设计非常不赞成使用全局变量。

但是每次都得进行VO-PO的转换,也确实很烦。我觉得有时候也可以在某个商业逻辑或者表示层使用PO,此时在这个商业逻辑的过程中PO的状态是不发生变化的,比如显示一条商品详细信息的商业逻辑。 
在开发过的项目中,规模都很小,我一直都把PO当VO用,因为PO确实很方便,结合Hibernate的DAO,我使用JAVA的集合对象作为值传递的载体,当然Struts也是我的不二之选。

我认为:在一些直观的,简单的,不易发生变化的,不需要涉及多个PO时,传递值还是使用PO好,这样可以减少大量的工作量(也就意味着减少bug,减少风险),也不需要担心未来的维护工作!

VO和PO 有什么区别啊?相关推荐

  1. POJO、VO、PO、FormBean区别:

    首先讲一下四者的概念       POJO:Pure Old Java Object,符合Java Bean属性规范的简单Java对象,通常也称为VO(Value Object,值对象). VO:就是 ...

  2. PO,BO,VO和PO JO的区别

    PO:persistent object 持久对 1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录. 2 .在hibernate持久化框架中与in ...

  3. VO BO PO DO DTO DAO POJO概念及区别

    VO BO PO DO DTO DAO POJO 概念及区别 1.VO( value object) 即值对象 VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看 ...

  4. vo,po,pojo,dto区别

    一:POJO(Plain Old Java Object) POJO 可认为是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO. 二:VO(View Object) 视图对象,用于展示层 ...

  5. VO、DTO、BO、PO、DO区别

    VO.DTO.BO.PO.DO区别 VO:(View Object)视图对象,一般位于Controller层,用于展示视图. DTO:(Data Transfer Object)数据传输对象, 即RP ...

  6. IT 开发常见 英文简称 VO, BO, PO的讲解

    vo=持久对象, 与数据库表一一对应 bo=业务对象, 来自vo, 但是是跟表单一一对应, 是vo满足业务逻辑的特殊实现, 就是说可能多个bo都来自同一个bo VO和PO的主要区别在于: Ø VO是独 ...

  7. bo JAVA是什么意思_entity、bo、vo、po、dto、pojo如何理解和区分?

    Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...

  8. 【转】entity、bo、vo、po、dto、pojo如何理解和区分?

    Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...

  9. vo、po、bo、dto、dao、pojo、entity如何理解和区分?

    Java开发过程中,基本实体类包都以entity或者model来称呼,可是不少项目中,却以Bo.Vo来命名,面试的时候,也有可能被问到这些问题.那么,这几者分别代表什么意思呢? Entity 最常用实 ...

最新文章

  1. Java大厂技术文档:Redis+Nginx+设计模式+Spring全家桶+Dubbo精选
  2. python定义一个空数组_python如何创建空数组?
  3. 推荐一个ASP.NET的资源网站
  4. 简单暴力到dp的优化(中级篇)
  5. PLSQL连接本地的Oracle数据库
  6. 【备忘】年薪50万2017年最新北风网Spark2.0从入门到精通教程
  7. 朗文词典第五版安装详细步骤
  8. Rendezvous机制完成数据交互。Rendezvous是一个基于—_者一__者模型设计的抽象类。
  9. RHCE 考试经验总结
  10. 好女人是一所学校- -
  11. 硬盘数据恢复原理与方法(一)
  12. "Selenium + Firefox"如何使用带用户名密码认证的HTTP代理
  13. Navicat安装教程和评测
  14. Cowboy 用户指南 (二) - Erlang and the Web
  15. python数据建模_Python数据模型
  16. 三菱FX系列PLC和台达ASDA-B2伺服驱动器位置控制接线和程序示例
  17. 链路聚合(动态捆绑链路)、负载均衡详解、全双工与半双工区别、LACP优先级详解(附图)
  18. 企业员工信息管理系统源码+ppt+论文+中期检查表+sql
  19. 第一位女程序员奥古斯塔·爱达·金
  20. OD调试3--reverseMe

热门文章

  1. 分层结构的生活例子_分层架构中的服务层-服务层实战
  2. 用hutool将数字转简体中文和繁体中文,支持金额模式
  3. 要注意 packages.config 中的targetFramework
  4. python对离散功率点进行积分得到电耗
  5. 【VAE学习笔记】全面通透地理解VAE(Variational Auto Encoder)
  6. USB2.0差分线设计
  7. 【多目标轨迹预测】Trajectron++:Dynamically-Feasible TrajectoryForecastin With Heterogeneous Data(简化翻译+笔记)
  8. Selenium自动化之最大化浏览器操作
  9. 管理类联考——数学——记忆篇——不同角度解读——一、算术——应用题
  10. ll1语法分析器c语言E-E T,算术表达式的 LL(1)语法分析器