VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用
文章目录
- 一、概念讲解
- 二、概念澄清
- 三、使用场景
- 四、经验总结
一、概念讲解
VO(View/Value Object)—— 视图对象
DTO(Data Transfer Object)—— 数据传输对象
BO(Business Object)—— 业务对象
PO(Persistent Object)—— 持久对象
DO(Data/Domain Object)—— 数据/领域对象
POJO(Plain Old/Ordinary Java Object)—— 以上模型的统称
POJO
是简单的Java
对象,不包含业务逻辑、能够控制自己内部所有属性访问的Java
对象。
二、概念澄清
JavaBean VS POJO
JavaBean POJO 没有业务逻辑 没有业务逻辑 必须构造函数 无需构造函数 private 修饰成员变量 成员变量的修饰符无限制 P.S
JavaBean 其实是 POJO 的一种形式(JavaBean < POJO)
三、使用场景
网摘关系图
DTO(Data Transfer Object)数据传输对象
数据传输对象比较特殊,之所以将
DTO
绘制在展示层
和业务逻辑层
之间,是因为它有两种存在形式:- 前端:它是以
Json
字串的形式存在 - 后端:它是以
Java
对象的形式存在
微服务之间
DTO
对象的模型鉴定形式:- 服务(模块)与服务(模块)之间相对独立,我们可以将数据传输对象命名为
DTO
- 服务(模块)与服务(模块)之间不是独立,每一个都不是一个完整的业务模块,拆分可能仅仅是因为计算复杂度或者性能问题考虑拆分的问题,那么就不能将对象命名为
DTO
,只能是BO
- 前端:它是以
VO(View/Value Object)—— 视图对象
VO
就是展示用的数据,不管展示方式是网页、客户端、APP
,只要是这些数据用于展示给人看的就是VO
VO VS DTO
- 区别一:
字段可能不一样,VO
会根据实际情况,对字段有所删减 - 区别二:
属性值可能不一样,VO
会根据DTO
中对值进行展示业务对解释(比如:为不暴露数据库字段,修改属性名称、敏感字段不展示等等)
- 区别一:
PO(Persistent Object)—— 持久对象
简单的说
PO
就是数据库中的记录,一个PO
的数据结构对应着库中的表结构,表中的一条记录就是一个PO
对象。对于PO
来说,数量是相对固定的,不会超过数据库中表的数量。等同于Entity
,它两概念是一致的。BO(Business Object)—— 业务对象
BO
就是PO
的组合- 简单解释:
比如:PO
是一个交易记录,BO
就是一个人全部的交易记录集合对象 - 复杂解释:
比如:PO1
是交易记录,PO2
是登录记录、PO3
是商品浏览记录、PO4
是添加购物记录,BO
就是个人网站行为对象
- 简单解释:
DO VS DTO
这两个的区别主要也是字段的删减。
BO
对内,为了进行业务计算需要辅助数据或者一个业务有多个对外接口,BO
可能会含有很多接口对外所不需要的数据,因此DTO
需要在BO
的基础上选取自己所需的数据赋值。DO(Data/Domain Object)—— 数据/领域对象
- 阿里开发手册
DO
等同于PO
DDD
领域驱动设计
DO
等同于BO
- 阿里开发手册
四、经验总结
PO(Entity)
这个是没有办法省略的,所有涉及数据库操作的都需要有持久化对象- 不是非常大型的简单系统,
DTO
和BO
可以合并为一个,当业务扩展的时候注意拆分即可 - 概念是给人用的,多人协作的时候一定要保证大家的概念一致。请勿形而上学、过度设计、一切设计都基于现有的业务规则和系统大小
VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用相关推荐
- VO,DTO,BO,POJO,PO的概念介绍
po: 1.po:popersistent object 持久对象,持久对象的意思指的是可以从内存中存储到关系型数据库中. 2.因此一个po对应的数据库中的每一条记录. pojo: 1. pojo:p ...
- VO的实际应用;后端接收前端传入的值;实体类转化VO;PO,VO,DTO,BO,DAO,POJO区别
文章目录 各层转换流程 分层领域模型规约: 领域模型命名规约: 后端向前端传参 封装 前端向后台传参 封装 快速转换解决方案 参考 各层转换流程 分层领域模型规约: DO( Data Object): ...
- Java开发中的几种对象的说明(PO,VO,DTO,BO,POJO,DAO,SAO等)
一.PO :(persistant object ),持久对象 可以看成是与数据库中的表相映射的java对象,也就是说只有属性和setter和getter方法.使用Hibernate来生成PO是不错的 ...
- DAO、DTO、PO、POJO、BO、VO、AO基本概念
一.基本概念: DAO:Data access object 数据库访问对象 主要用来封装对数据库的访问,通过它可以把POJO持久化为PO,用PO组装出来VO.DTO. DTO:Data Transf ...
- vo bo po dao pojo dto
DAO: data access object数据访问对象 这个大家最熟悉,和上面几个O区别最大,基本没有互相转化的可能性和必要. 主要用来封装对数据库的访问.通过它可以把POJO持久化为PO,用PO ...
- Java 中的PO VO DTO BO
PO 持久对象,数据: BO 业务对象,封装对象.复杂对象 ,里面可能包含多个类: DTO 传输对象,前端调用时传输 : VO 表现对象,前端界面展示. 当你业务足够简单时,一个POJO 也完全当做P ...
- PO VO DTO BO区别及用法
PO: persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录. 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象. BO: businessobjec ...
- VO,DTO,DO,PO区别
何为POJO POJO(Plain Ordinary Java Object),即简单Java对象,就是一个我们最常见的普通Java对象,这个概念是被大家叫出来的,它具有一些属性,然后提供对应的get ...
- 简单理解VO、DTO、PO、DO的概念、区别
简单理解VO.DTO.PO.DO的概念.区别 概念 VO(View Object) 视图对象,用于表现层,对指定页面或者组件需要的数据进行封装. DTO(Date Transfer Object) 数 ...
- bo dto java vo_java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的理解
O/R Mapping 是 Object Relational Mapping (对象关系映射)的缩写.通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据.在 O/R Mapping 的世界里 ...
最新文章
- 子窗体更新父窗体控件内容
- 脉冲20KV高压发生器电弧打火
- 联想e470无线网卡驱动_笔记本显示已关闭无线功能,请问怎样打开?谢谢!
- zookeeper入门系列
- L. Mod(预处理+分块)
- shell脚本之shellcode自动提取工具
- [Cogs14] [网络流24题#1] 飞行员分配方案 [网络流,最大流,二分图匹配]
- java适配器模式_适配器模式的设计,你get到了吗?
- Cookie和Session的关系(个人理解)
- 【Java面试题系列】:Java中final finally finalize的区别
- html脚本src,HTML script脚本标签
- 设计一个简单HTML爵士音乐网页(HTML+CSS)
- C语言实现调用python绘图
- 主成分分析与因子分析
- 电影影视网站对接微信公众号 日引流500+的实例教学
- 程序员电脑组装_解密中国互联网企业创始人,程序员是如何打下半壁江山的?...
- html长图转换成pdf,支持把各类文档转换成 HTML5(SVG)接口、长图片、PDF 。word转pdf、word转html5、pdf转网页html5、pdf转图片的接口...
- Ant Design mentions组件更改样式
- tensorflow学习笔记(二十七):leaky relu
- Win2008安装11g报错:orandce11.dll.dbl and orancds11.dll.dbl 文件找不到