VO:值对象
用来做数据展示的,重点体现在人们直观看到的数据,比如web页面中的数据,最主要的存在形式就是json了。
DTO:数据传输对象
该传输通常指前后端之间的传输。在后端它的存在形式是Java对象,在前端它的存在形式是json。
PO:持久对象
PO是数据库中的记录,表中一条记录就是一个PO对象。通常PO里面除了get、set方法外没有别的方法了。
BO:业务对象
BO就是PO的组合。许多个PO组成一个BO
假如PO是一条购物记录,那么BO就是全部的交易记录集合对象。
或者说PO_1是交易记录、PO_2是登陆记录、PO_3是商品浏览记录、PO_4是添加购物车记录…那么,BO就是个人网站的行为记录。
DAO:数据库访问对象
用于访问数据库
VO和DTO的区别?
DTO是原数据,而VO是在DTO前端数据基础上处理过后展示出来的数据。
比如,性别在DTO中用“男”和“女”表示,甚至用“0”和“1”表示,而处理后的VO则是“先生”、“女士”。
通常,VO根据需要会删减一些DTO中的字段,还会根据需要对DTO中的值进行展示业务的解释。
BO和DTO的区别?
BO对内为了进行业务计算需要辅助数据,或者是一个业务有多个对外的接口,BO可能会含有很多接口对外所不需要的数据,因此DTO需要在BO的基础上,只要自己需要的数据,然后对外提供。就像VO根据需要会删减一些DTO中的字段一样。
DO又是什么?
这个概念有点混淆
阿里巴巴的开发手册中对它的定义等同于上面的PO
在DDD(Domain-Driven Design)领域驱动设计中,等同于上面的BO
应用中的建议
- PO不能省略,不管叫PO还是Entity,必须要有
- 一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行
- VO是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用DTO
- 关于DO个人会把它用作实体对象的映射