VODODTOPO

news/2024/11/8 18:48:25/

概述

经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。

一般而言,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。

一般性概念

VO(View Object): 视图对象,用于展示层,它的作用是把某个指定页面的所有数据封装起来。

DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。

DO(Domain Object): 领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

PO(Persistent Object): 持久化对象,它跟持久层(一般是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段就对应PO的一个属性。

项目中的运用理解

项目中常见的实体类有VO,DO和DTO,命名规则也常是以相应字符串结尾,如VO.Java。但是DTO不总是遵循这个规则,而通常与他的用途有关,如写成Query.java,表示存储了一个查询条件。项目中实体类出现的业务层次也没有这么严格,例如我们可以在视图层就组装一个DO,也可以将一个VO从持久层传出来,所以与业务分层相关联的划分方法显得有些冗余。

从项目代码中抽象出的理解是:VO对应于页面上需要显示的数据,DO对应于数据库中存储的数据,DTO对应于除二者之外需要进行传递的数据。

  • PO(Persistent Object):在 orm 映射的时候出现的概念,如果没有 orm 映射,就没有这个概念存在了。通常对应数据模型,可以看成是与数据库中的表相映射的 java 对象。最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用PO 的集合。 PO 中应该不包含任何对数据库的操作。
  • DO(Domain Object):就是从现实世界中抽象出来的有形或无形的业务实体。
  • DTO(Data Transfer Object):泛指用于展示层与服务层之间的数据传输对象。
  • VO(Value Object):通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表中字段不对应 ,这根据业务的需要 。
  • BO(Business Object):封装业务逻辑的 java 对象 , 通过调用 DAO 方法 , 结合 PO,VO 进行业务操作。业务对象主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。
  • DAO(Data Access Object):它负责持久层的操作,为业务层提供接口。此对象用于访问数据库。通常和 PO 结合使用, DAO 中包含了各种数据库的操作方法。通过它的方法 , 结合 PO 对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。配合 VO, 提供数据库的CRUD 操作。

http://www.ppmy.cn/news/428013.html

相关文章

VO、DTO、DO、PO

浅析VO、DTO、DO、PO 概念 VO(View Object): 视图对象,主要对应界面显示的数据对象。对于一个WEB页面,或者SWT、SWING的一个界面,用一个VO对象对应整个界面的值。BO(business object)&#xf…

VDO(Virtual Data Optimize虚拟数据优化)

作者:吴业亮 博客:wuyeliang.blog.csdn.net VDO(Virtual Data Optimize虚拟数据优化):通过压缩或删除存储设备上的数据来优化存储空间 VDO层放置在现有块存储设备例如RAID设备或本地磁盘的顶部。这些块设备也可以是加密设备。存储…

DO、DTO和VO分别是什么?

在Java中,DO、DTO和VO分别表示数据对象(Data Object)、数据传输对象(Data Transfer Object)和值对象(Value Object),它们有以下区别: 1. DO(数据对象&#x…

三、Docker的基本组成和常用命令(一)

文章目录 Docker的基本组成镜像(image)容器(container)仓库(repository)总结 Docker的常用命令帮助命令镜像命令docker imagesdocker searchdocker pulldocker rmi Docker的基本组成 镜像(image) Docker 镜像(Image)就是一个只读的模板。镜像可以用来创…

如何构建LAMP平台:Apache,MySQL,PHP

如何构建LAMP平台:Apache,MySQL,PHP 一、Apache网站服务:1. Apache的起源(多系统兼容):2.重要特点:3.软件版本:4.编译安装呢http服务器: 二、LAMP简介与概述&…

我是一名普通机器视觉工程师,胸无大志又何妨,平平淡淡又怎样!最终归宿,看大门,放放羊!

康耐视智能相机Insight-缺陷检测 我平常写文章经常把一句话写在文章中: 对于年轻人来说,需要工作,更需要生活。 对于年轻人来说,需要努力,更需要“面包”。 对于年轻人来说,需要规划,更需要发展。 如果不是你想要的,你可以尽快花上一段时间调整下自己,但是时间不要…

C高级 day35

1、ubuntu的网络配置 1、查看网络是否连接 ping baidu.com 2、保证虚拟机有桥接网络 虚拟机---->设置---->网络适配器------>选择桥接或者是Vmnet0 给虚拟机添加桥接网络,如果没有vmnet0,添加网络 3、配置虚拟机的桥接网络 右上角网络图标-----…

python 妙笔生花

1.学习编程好处 最主要的好处就是,思考问题的方式变得更加具有逻辑性。 日常我们敲代码时,需要思考每一行的代码执行效果,它就需要认真设计每行代码可用性。如果在设计上发生错误,在代码执行时就会报错。还能做到 触类旁通。 古语有云: 有道无术,术可求,有术无道,止于术…