java中的BO根DTO的区别以及使用场景
java中的BO根DTO的区别以及使用场景
BO(Business Object)业务对象 BO就是PO(Persistant Object)的组合 简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象 复杂点儿的例子PO1是交易记录,PO2是登录记录,PO3是商品浏览记录,PO4是添加购物车记录,PO5是搜索记录,BO是个人网站行为对象 BO是一个业务对象,一类业务就会对应一个BO,数量上没有限制,而且BO会有很多业务操作,也就是说除了get,set方法以外,BO会有很多针对自身数据进行计算的方法 为什么BO也画成横跨两层呢?原因是现在很多持久层框架自身就提供了数据组合的功能,因此BO有可能是在业务层由业务来拼装PO而成,也有可能是在数据库访问层由框架直接生成 很多情况下为了追求查询的效率,框架跳过PO直接生成BO的情况非常普遍,PO只是用来增删改使用
BO和DTO的区别 这两个的区别主要是就是字段的删减 BO对内,为了进行业务计算需要辅助数据,或者是一个业务有多个对外的接口,BO可能会含有很多接口对外所不需要的数据,因此DTO需要在BO的基础上,只要自己需要的数据,然后对外提供 在这个关系上,通常不会有数据内容的变化,内容变化要么在BO内部业务计算的时候完成,要么在解释VO的时候完成
补充知识:
什么是PO?
PO(Persistant Object)持久对象 PO比较好理解 简单说PO就是数据库中的记录,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象 通常PO里面除了get,set之外没有别的方法 对于PO来说,数量是相对固定的,一定不会超过数据库表的数量 等同于Entity,这俩概念是一致的
什么是DO?
现在主要有两个版本 一个是阿里巴巴的开发手册中的定义 DO( Data Object)这个等同于上面的PO 另一个是在DDD(Domain-Driven Design)领域驱动设计中 DO(Domain Object)这个等同于上面的BO
实际开发中,是否全部需要定义?
我们在用的时候是必须按这个来做吗? 当然不是的,系统和系统的复杂度不同,协作水平不同,完全没有必要教条主义,建议是:1.PO这个不能省,不管叫PO还是Entity,怎么着都得有 2,一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2020-07-03 Elasticsearch中文分词
2020-07-03 Windows下elasticsearch+logstash+kibana的安装启动