原文链接:http://www.cnblogs.com/zander/archive/2012/08/11/2633344.html

PO(persistant object)(个人理解:就是数据库模型 通过映射 转化成的 持久化类 model)
持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
VO(value object) 值对象 (个人理解:便于使用在po的基础上进行又一次加工而产生的对象)
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。
BO(business object) 业务对象(个人理解:便于使用在vo的基础上进行 业务逻辑的 加工 后产生的类 service 层)从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。
下边是我理解中的架构
--------------数据库
--------------model层PO(persistant object)(个人理解:就是数据库模型 通过映射 转化成的 持久化类 model)持久对象 在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。
VO(value object) 值对象 (个人理解:便于使用在po的基础上进行又一次加工而产生的对象)
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。
--------------dao层
使用po vo对数据库进行的简单的操作 例如增删改查。。。。。
--------------service层BO(business object) 业务对象(个人理解:便于使用在vo的基础上进行 业务逻辑的 加工 后产生的类 service 层)从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。

-------------Controller层

利用service层的类进行实际的业务逻辑处理.

-------------View层展示通过业务逻辑产生的一些列数据============================================这篇文章于我心有戚戚焉。VO是查询结果,把前台需要的数据用对象封装起来,跟数据库表大不相同,比如要显示一个”帖子“,就要包含这个帖子相对应的话题题目,用户姓名,用户头像,用户学校等信息。
public class PostVo {
    Long id;
    Long createdTime;
    String mediaPath;
    String content;

    TopicVo topic;

    UserVo user;
    Long authorId;
    String authorName;
    Long lastUserId;
    String lastUserName;

    Boolean hasForwarded;
    Boolean hasPraised;
    Integer commentCount;
    Integer praiseCount;
    Integer forwardCount;

    Long forwardTime;
    Long realTime;
}
PO是插入数据,当用户插入数据时,把传的参数封装成一个对象。因为上面userId在UserVo对象中取得,所以没法通过PostVo直接插入数据而PO中的属性与数据库是一一对应的。
 class TopicPo {
    Long id;
    Long createdTime;
    Long userId;
    String title;
    String content;
    Integer postCount;
    String iconPath;
    Integer form;
    Integer fansCount;
}
除此之外,还有DTO数据传输对象,DO域对象,似乎他们并不是那么重要.不要为了使用理论而使用理论,不要陷入特定的模式之中而固步自封,要一切从实际出发,去有选择地使用。

【转】VO BO PO 介绍的更多相关文章

  1. vo bo po dao pojo dto

    Recommended for you: Get network issues from WhatsUp Gold.  Not end users. DAO: Data access object d ...

  2. PO VO BO DTO POJO DAO(转)

    2EE开发中大量的专业缩略语很是让人迷惑, 特别是对于刚毕业的新人来说更是摸不清头脑.若与公司大牛谈技术人家出口就是PO VO BO DTO POJO DAO 等,让新人们无比仰慕大牛. PO(bea ...

  3. JavaEE PO VO BO DTO POJO DAO 整理总结

    佩服能将复杂难懂的技术,抽象成简单易懂事物的人. 厌恶将简单易懂的技术,添加一堆专业术语将别人弄的头晕目眩的人. PO VO BO DTO POJO DAO 总体一览: 1.DAO[data acce ...

  4. PO/POJO/VO/BO/DAO/DTO

    PO(persistant object) 持久对象在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库 ...

  5. VO , PO , BO , QO, DAO ,POJO

    VO , PO , BO , QO, DAO ,POJO, O/R Mapping 是 Object Relational Mapping (对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定 ...

  6. 关于各种O,DO/BO/DTO/VO/AO/PO

    阿里巴巴Java开发手册 链接:https://pan.baidu.com/s/11I9ViOrat-Bw_HA8yItXwA 密码:x5yi 2. DO/BO/DTO/VO/AO/PO PO(per ...

  7. PO VO BO DTO POJO DAO之间的关系

    J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了. PO:persistant ...

  8. 关于VO、PO的理解——java的(PO,VO,TO,BO,DAO,POJO)解释

    O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据. 在O/R Mapping的世界里,有 ...

  9. 在Java中VO , PO , BO , QO, DAO ,POJO是什么意思

    在Java中VO , PO , BO, DAO ,POJO是什么意思 最近在项目中,遇到VO,我的天...那就一起学习回忆一下 首先简单说明下: O/R  Mapping是Object Relatio ...

随机推荐

  1. Recovering deleted Records

    [原文] recovering-deleted-records Solution That requires an actual timestamp (or date), you're passing ...

  2. spring注入静态成员变量提示invalid setter method

    果然还是不够细心啊,被坑一晚上.. 一个极其简单的小程序,但是需要通过xml文件配置注入一个值,唯一的特别是要注入的属性是类中的静态成员变量.. 如下,然后自动生成get和set方法..坑就从此开始了 ...

  3. 关于Lucene 3.0升级到Lucene 4.x 备忘

    最近,需要对项目进行lucene版本升级.而原来项目时基于lucene 3.0的,很古老的一个版本的了.在老版本中中,我们主要用了几个lucene的东西: 1.查询lucene多目录索引. 2.构建R ...

  4. vmware虚拟机 32位Ubuntu 安装matlab_R2012A问题小记

    最近由于学校课程的需要,所以在Ubuntu上捣腾了一下matlab,经历曲折,记录一下,希望能让大家少跳点坑.先分享一个有效的下载链接: http://www.matlab.org.cn/Downlo ...

  5. 为opencv贡献代码

    本文记录本人从发现bug,提交bug,到修复bug的过程.下面enjoy: 1.发现bug 由于项目需要,开发了一个视频检测demo,类似于扫一扫二维码的程序,不过不是这个程序不是扫二维码.具体实现参 ...

  6. AC日记——与7无关的数 openjudge 1.5 39

    39:与7无关的数 总时间限制:  1000ms 内存限制:  65536kB 描述 一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n( ...

  7. MySQL 5.7.x 配置教程

    软件环境 操作系统:windows 10 x64 企业版 MySQL:mysql-5.7.11-winx64 MySQL官网下载:http://downloads.mysql.com/archives ...

  8. document对象补充

    五.相关元素操作: var a = document.getElementById("id");                找到a: var b = a.nextSibling ...

  9. 获取当前时间 和 10s倒计时案例

    1.获取当前的时间,时间没分每秒都在走,(把握现在,将来会是美好的!) <title>获取当前时间</title> <script type="text/jav ...

  10. NOIP1999 旅行家的预算

    题目描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的).给定两个城市之间的距离D1.汽车油箱的容量C(以升为单位).每升汽油能行驶的距离D2.出发点每升汽油价格P和沿 ...