原标题:彻底搞懂DAO,PO,BO,DTO,VO,DO

有干货,就分享,点上面的蓝字“测试之道”关注。

上才艺,哦不,上图...

Entity

最常用实体类,基本和数据表一一对应,一个实体一张表。

DAO(Data Access Object):数据访问对象。

是sun的一个标准j2ee设计模式的接口之一,负责持久层的操作 。这个基本都了解,Dao和上面几个O区别最大,基本没有互相转化的可能性和必要,主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。

PO(Persistant Object):持久层对象。

对应数据库中表的字段,数据库表中的记录在java对象中的显示状态,最形象的理解就是一个PO就是数据库中的一条记录。

BO(business object): 业务对象。

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

形象描述为一个对象的形为和动作,当然也有涉及到其他对象的一些形为和动作。比如处理一个人的业务逻辑,该人会睡觉,吃饭,工作,上班等等行为,还有可能和别人发关系的行为,处理这样的业务逻辑时,我们就可以针对BO去处理。

再比如投保人是一个PO,被保险人是一个PO,险种信息也是一个PO等等,他们组合起来就是一张保单的BO。

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

前端调用时传输;也可理解成“上层”调用时传输。

比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.

VO(Value Object): 值对象。

VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO。VO主要的存在形式就是js里面的对象(也可以简单理解成Json)

Pojo(Plain Ordinary Java Object):纯的传统意义的Java对象。

最基本的Java Bean只有属性加上属性的get和set方法。Pojo可以额转化为PO、DTO、VO。比如POJO在传输过程中就是DTO。

DO是什么?

上面这些概念基本上已经涵盖了全部的流程,DO只是跟其中一个概念相同。但是跟哪个概念相同呢?现在主要有两个版本。

一个是阿里巴巴的开发手册中的定义, DO( Data Object) 这个等同于上面的PO。

另一个是在DDD(Domain-Driven Design)领域驱动设计中, DO(Domain Object) 这个等同于上面的BO。

这几个概念很完整,我们在用的时候是必须按这个来做吗?

当然不是的,系统和系统的复杂度不同,协作水平不同,完全没有必要教条主义,这些概念全上。上哪些概念,省哪些,我给一些实际建议

1. PO这个没法省,不管叫PO还是Entity,怎么着都得有。

2. 一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行。

3. VO是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用DTO。

4. 这也是最重要的一条,概念是给人用的,多人协作的时候一定要保证大家的概念一致,赶紧把这篇文章转发给跟你协作的人吧。

再附一张参考图

测试之道出品,必属精品。别忘了分享给你的朋友。

测试之道

加微信yesterry进微信群,注明"加群"。

微信公众号:testtao返回搜狐,查看更多

责任编辑:

java do po dto_彻底搞懂DAO,PO,BO,DTO,VO,DO相关推荐

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

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

  2. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  3. 学习java多线程,这必须搞懂的这几个概念

    转载自 学习java多线程,这必须搞懂的这几个概念,很重要. 同步和异步 同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作. 举个例子,你去银行ATM取 ...

  4. JAVA每个初学者都应该搞懂的问题 还可以比较基础

    还可以比较基础 转自http://blog.csdn.net/devillyd/article/details/2486520 对于这个系列里的问题,每个学Java的人都应该搞懂.当然,如果只是学Ja ...

  5. DAO PO BO DTO VO DO的区别

    Entity 最常用实体类,基本和数据表一一对应,一张表一个实体. DAO(Data Access Object):数据访问对象 是sun公司的一个标准j2ee设计模式的接口之一,负责持久层的操作.D ...

  6. java队列_如何彻底搞懂 Java 数据结构?CSDN 博文精选

    作者 | 张振华.Jack 责编 | 郭芮 出品 | CSDN 博客 本文和大家一起来重温<Java数据结构>经典之作. Java数据结构 要理解Java数据结构,必须能清楚何为数据结构? ...

  7. Java 源码出发彻底搞懂String与StringBuffer和StringBuilder的区别

    导读 在Java中数据类型分为基本数据类型与引用数据类型.其中String属于引用类型,也是最常见的一种类型.但是我们对于String了解多少呢?String对象的内存地址?如何创建String对象? ...

  8. 【JAVA基础篇】彻底搞懂拆箱装箱

    什么是装箱拆箱? Java有8种基本数据类型,并且为这8种类型提供了包装器类型.比如说int类型的包装器类型是Integer. 装箱是指将基本数据类型转换成对应的包装器类型.拆箱是指将包装器类型转换基 ...

  9. java 异步阻塞_大白话搞懂什么是同步/异步/阻塞/非阻塞

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前言 在最近的一些面试中,跟应聘者聊了比较多关于"同步/异步,阻塞/非阻塞"相关的话题,发现大家对于这些概念的理解都比较模糊,甚至有的 ...

最新文章

  1. [YTU]_2575( 交通工具信息)
  2. MindSpore!这款刚刚开源的深度学习框架我爱了!
  3. java final修饰的类_java final修饰符使用总结,final修饰类详解
  4. Linux(CentOS6.4)Solr4.8.1中文分词配置(IK分词)
  5. java各种的不好_译文《最常见的10种Java异常问题》
  6. Python str字符串常用到的函数
  7. Linux添加1G虚拟内存,Linux下怎样增加虚拟内存
  8. EasyRecovery如何恢复系统镜像
  9. Python中re.findall的贪心和非贪心算法
  10. HackerRank SQL练习题答案大全
  11. python 下载百度文库_百度文库随便下载,解除限制
  12. vue根据身份证号算出年龄
  13. 修改Cisco交换机ntp服务器,Cisco交换机NTP的配置
  14. linux xorg占用显存过大
  15. 洛谷4550 收集邮票(期望DP)
  16. python学习之-- 协程
  17. 如何使用zx编写shell脚本
  18. Arndale Octa开发板下载android源码
  19. 全栈开发工程师面试题一
  20. 算法系列——组合总数(Combination Sum)

热门文章

  1. 用Python写一个纪念日计算工具
  2. Tecplot云图——数据文本格式1
  3. Combo Box Control
  4. 2018 SUCTF招新赛
  5. 在线英文广播电视资源
  6. 同步时序逻辑电路分析——数电第六章学习
  7. 【毕业设计】空气质量检测仪(环境检测盒子)- stm32 单片机 嵌入式 物联网
  8. 绘制鱼骨图,卡壳了,找到了别人的文章,先好好学习理论知识。
  9. java 数据库 事务 只读_Spring 事务 readOnly 到底是怎么回事?
  10. C语言中,求三个数中最大数