`
jaczhao
  • 浏览: 87014 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

PO VO BO DTO POJO DAO

阅读更多
J2EE开发中大量的专业缩略语很是让人迷惑,尤其是跟一些高手讨论问题的时候,三分钟就被人家满口的专业术语喷晕了,PO VO BO DTO POJO DAO,一大堆的就来了(听过老罗对这种现象的批判的朋友会会心一笑)。

    首先声明偶也不是什么高手,以下总结都是自己的体会。不对之处请您多指教。

PO:
persistant object持久对象

最形象的理解就是一个PO就是数据库中的一条记录。
好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。


BO:
business object业务对象

主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
比如一个简历,有教育经历、工作经历、社会关系等等。
我们可以把教育经历对应一个PO,工作经历对应一个PO,社会关系对应一个PO。
建立一个对应简历的BO对象处理简历,每个BO包含这些PO。
这样处理业务逻辑时,我们就可以针对BO去处理。


VO :
value object值对象
ViewObject表现层对象

主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。


DTO :
Data Transfer Object数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO


POJO :
plain ordinary java object 简单java对象
个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。

一个POJO持久化以后就是PO
直接用它传递、传递过程中就是DTO
直接用来对应表示层就是VO

DAO:
data access object数据访问对象
这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要.
主要用来封装对数据库的访问。通过它可以把POJO持久化为PO,用PO组装出来VO、DTO


       总结下我认为一个对象究竟是什么O要看具体环境,在不同的层、不同的应用场合,对象的身份也不一样,而且对象身份的转化也是很自然的。就像你对老婆来说就 是老公,对父母来说就是子女。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑,让大家能更好的去用面向对象的方式处理问题.

      大家千万不要陷入过度设计,大可不必为了设计而设计一定要在代码中区分各个对象。一句话技术是为应用服务的。

欢迎指正。


画了个图,感觉没有完全表达出自己的意思。。。。。谁帮忙完善下,最好能体现各个O在MVC中的位置
转自于http://www.cnblogs.com/luohuarenduli/archive/2008/01/21/1047691.html
分享到:
评论

相关推荐

    Java中 PO VO BO DTO DAO 和 POJO 关系图

    Java中 PO VO BO DTO DAO 和 POJO 关系图

    java术语(PO/POJO/VO/BO/DAO/DTO)

    本文将详细解析"PO/POJO/VO/BO/DAO/DTO"这六个概念,并探讨它们在实际项目开发中的作用和应用场景。 1. PO(Persistent Object,持久化对象) PO是指与数据库表结构一一对应的Java对象,它通常包含了数据库表中的...

    po vo dto bo to

    ### Java中的PO、VO、TO、BO、DAO与POJO详解 #### 一、概述 在Java企业级应用开发中,经常会遇到各种类型的对象,如PO、VO、TO、BO、DAO以及POJO等。这些对象各有侧重,在系统架构的不同层次扮演着不同的角色。...

    Java的几种对象(PO-VO-DAO-BO-POJO)解释

    ### Java的几种对象详解:PO-VO-DAO-BO-POJO #### 一、PO:Persistant Object(持久对象) 持久对象(Persistent Object,简称PO),主要用于与数据库中的表进行映射。一个简单的PO对象可以代表数据库表中的一条...

    VO / DTO / BO / ORM DAO entity DO PO/ POJO(分层领域模型规约)整理

    本文将详细介绍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中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解

    Java 中 PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn 的理解 PO(Persistent Object):持久对象,指的是在 O/R Mapping 中将对象与关系数据库绑定的对象。PO 是由一组属性和属性的 get 和 set 方法组成。它...

    Java的(PO,VO,TO,BO,DAO,POJO)解释

    "Java的(PO,VO,TO,BO,DAO,POJO)解释" Java作为一门流行的编程语言,在软件开发中扮演着重要角色,其中一些关键概念和技术为开发者提供了方便快捷的开发体验。本篇文章将对Java中的PO、VO、TO、BO、DAO、POJO等概念...

    Blog:充当日常笔记或者个人博客吧

    Nginx配置文件详解Linux 安装JenkinsJAVA 多线程详解java 多线程学习How to create a Hello World with IntelliJ and Aspect JJava各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分Java finally...

    MVC设计模式

    #### 五、PO/VO/DAO/BO/DTO的区分 - **PO (Persistant Object)**:持久化对象,用来表示数据库表中的记录,每个PO对象对应一条数据库记录。 - **VO (Value Object)**:值对象,用于业务逻辑层中的数据传递。VO更多...

    程序员从初级到高级知识汇集

    除此之外,书中还涉及了如何自定义MyEclipse的编译目录,设置JAVA环境变量,以及PO、BO、VO、DTO、POJO、DAO的概念和它们在软件开发中的角色,这些都是Java开发中不可或缺的基础知识。 整体来看,这本书涵盖了从...

    Java代码规范.pdf

    - 类名应使用UpperCamelCase风格,例外情况为DO、BO、DTO、VO、AO、PO、UID等。 - 方法名、参数名、成员变量、局部变量应统一使用lowerCamelCase风格。 - 常量命名应全部大写,单词间用下划线隔开。 - 抽象类...

    基于SOA和ROA的整体技术架构.docx

    - **POJO (Plain Ordinary Java Object)**:简单的Java对象,可以在不同阶段转化为PO、DTO、VO等。 - **PO (Persistant Object)**:对应数据库实体的持久化对象。 - **VO (View Object)**:用于表示层的对象,...

    《阿里巴巴Java开发手册》v1.4.0(详尽版).docx

    - **规定**:类名统一使用 UpperCamelCase 风格,特殊情况除外(如 DO/BO/DTO/VO/AO/PO/UID 等)。 - **示例**:正确的命名方式如 `MarcoPolo`、`UserDO`、`XmlService`、`TcpUdpDeal`、`TaPromotion`。 4. **变量...

    阿里巴巴1.4代码书写规范word版本

    3. **强制规定**:类名遵循`UpperCamelCase`风格,但特定命名如`DO`、`BO`、`DTO`、`VO`、`AO`、`PO`、`UID`等除外。 - **正例**:如`MarcoPolo`、`UserDO`、`XmlService`、`TcpUdpDeal`、`TaPromotion`。 - **...

    阿里最新Java开发规范

    类名应当遵循`UpperCamelCase`风格,除非是某些特定的缩写词如`DO`(Data Object)、`BO`(Business Object)、`DTO`(Data Transfer Object)、`VO`(View Object)、`AO`(Application Object)、`PO`(Persistent...

Global site tag (gtag.js) - Google Analytics