PO:persistent object持久对象

1 .有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。

2 .在hibernate持久化框架中与insert/delet操作密切相关。

3 .PO中不应该包含任何对数据库的操作。

---------------------------------------------------------

POJO :plain ordinary java object 无规则简单java对象

一个中间对象,可以转化为PO、DTO、VO。

1 .POJO持久化之后==〉PO

(在运行期,由Hibernate中的cglib动态把POJO转换为PO,PO相对于POJO会增加一些用来管理数据库entity状态的属性和方法。PO对于programmer来说完全透明,由于是运行期生成PO,所以可以支持增量编译,增量调试。)

2 .POJO传输过程中==〉DTO

3 .POJO用作表示层==〉VO

PO 和VO都应该属于它。

----------------------------------------------------------

BO:business object 业务对象

封装业务逻辑为一个对象(可以包括多个PO,通常需要将BO转化成PO,才能进行数据的持久化,反之,从DB中得到的PO,需要转化成BO才能在业务层使用)。

关于BO主要有三种概念

1 、只包含业务对象的属性;

2 、只包含业务方法;

3 、两者都包含。

在实际使用中,认为哪一种概念正确并不重要,关键是实际应用中适合自己项目的需要。

----------------------------------------------------------

VO:value object值对象 / view object表现层对象

1 .主要对应页面显示(web页面/swt、swing界面)的数据对象。

2 .可以和表对应,也可以不,这根据业务的需要。

:在struts中,用ActionForm做VO,需要做一个转换,因为PO是面向对象的,而ActionForm是和view对应的,要将几个PO要显示的属性合成一个ActionForm,可以使用BeanUtils的copy方法。

----------------------------------------------------------

DTO(TO):Data Transfer Object数据传输对象

1 .用在需要跨进程或远程传输时,它不应该包含业务逻辑。

2 .比如一张表有100个字段,那么对应的PO就有100个属性(大多数情况下,DTO内的数据来自多个表)。但view层只需显示10个字段,没有必要把整个PO对象传递到client,这时我们就可以用只有这10个属性的DTO来传输数据到client,这样也不会暴露server端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。

----------------------------------------------------------

DAO:data access object数据访问对象

1 .主要用来封装对DB的访问(CRUD操作)。

2 .通过接收Business层的数据,把POJO持久化为PO。

简易关系图:

转载自:http://blog.csdn.net/u010834071/article/details/46332903

PO、POJO、BO、DTO、VO之间的区别(转)的更多相关文章

  1. 【转】PO/POJO/BO/DTO/VO的区别

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

  2. PO/POJO/BO/DTO/VO的区别(转)

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

  3. 关于各种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 ...

  4. 对Java的常用对象(POJO、DTO、PO、BO、VO、DAO)详细解释及应用场景

    首先这些对象都应用都是一些单词的简称,也是一种应用思想,故其他语言也可以使用,在Java里比较常见这些对象吧.下面来一一解释. 一.POJO(Plain Ordinary Java Object). ...

  5. 阿里java开发手册中命名规约解读之DO/BO/DTO/VO/AO

    前言 在阅读<阿里巴巴Java开发手册>时,看到命名规则中有这样一条 虽然知道这些是根据Java对象的角色所分配名称的后缀,但是没有弄清楚分别是什么意思,日常开发中也没有使用到. 网上查找 ...

  6. PO、BO、VO、DTO、POJO、DAO的区别

    PO: 基本上就是Entity了 persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录. 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象. ---- ...

  7. Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和项目实例图(转)

    PO(bean.entity等命名): Persistant Object持久对象,数据库表中的记录在java对象中的显示状态 最形象的理解就是一个PO就是数据库中的一条记录. 好处是可以把一条记录作 ...

  8. PO,BO,VO,DTO,POJO,DAO,DO是什么?

    PO (Persistent Object)   持久化对象,表示实体数据.BO (Business Object)        业务对象,主要是把逻辑业务封装为一个对象 .VO (Value/Vi ...

  9. 小解POJO、PO、BO、VO

    POJO :plain ordinary java object 无规则简单java对象 一个中间对象,可以转化为PO.DTO.VO. 一个简单的Java类,这个类没有实现/继承任何特殊的java接口 ...

随机推荐

  1. configure文件的生成

    https://blog.csdn.net/mitesi/article/details/44773951 make 根据Makefile编译源代码,连接,生成目标文件,可执行文件. make cle ...

  2. Docker入门级简单的操作命令

    在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机. 虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用. 容器技术是和我们的宿主机共享硬件资源及操作系统,可 ...

  3. 允许浏览器下载exe.config文件

    进入系统目录 %windir%\System32\inetsrv\config\ 编辑IIS配置文件 applicationHost.config 找到如下行 <requestFiltering ...

  4. eclemma怎么安装 eclemma的安装与简单使用图文教程(附下载)

    来自于:https://www.jb51.net/softjc/628026.html 一. 安装 有两种安装方法 1. 下载安装(推荐) 地址: http://sourceforge.net/pro ...

  5. python编写shell脚本

    模块 os模块和shutil模块主要用于在python中执行一些Linux相关的操作,其中 os.system(command) 可以直接运行Linux命令,如os.system('ls'). 不过, ...

  6. [jquery.validate]自定义方法实现"手机号码或者固定电话"的逻辑验证

    最近项目开发中遇到这样的需求“手机号码或者固话至少填写一个”,如下图所示: 项目采用的jquery.validate.js验证组件,目前组件不支持这种“或”逻辑的验证,于是就自己定义一个 jQuery ...

  7. tesseract库

    1.简介 # -*-coding:utf8 -*- #图形验证码识别技术 ''' 阻碍我们爬虫的,有时候是在登录或者请求一些数据时候的图形验证码.因此这里我们讲解 一种能将图片翻译成文字的技术.将图片 ...

  8. python for循环的遍历

    a = "你好啊"for i in range(len(a)): print(i) 解释:"len()" 意思是长度,a中有三个字,所以len(a) = 3,把 ...

  9. 安全相关及HttpClient

    1,Spring Security入门示例 Spring Security Annotation Configuration Example – HelloWorld 2,程序模块Get请求,获取响应 ...

  10. JS获取页面复选框选中的值

    function jqchk(){ //jquery获取复选框值 var chk_value =[]; $('input[class="sel"]:checked').each(f ...