一、Entity(与数据库表结构一致)
实体,和PO的功能类似,和数据表一一对应,一个Entity对应一张表,Entity里的每一个字段,与数据库相对应
二、VO(用于返回数据给前端或外部接口)
View Object对应页面显示的数据对象,可以和表对应,也可以不对应。控制层与视图层进行传输交换
三、PO(等同于Entity,和数据表结构对应)
Persistent Object持久化对象,跟数据库导入记录数据一一对应的映射关系。PO比较好理解
简单说PO就是数据库中的记录,一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象,通常PO里面除了get,set之外没有别的方法,对于PO来说,数量是相对固定的,一定不会超过数据库表的数量等同于Entity,这俩概念是一致的。
四、BO(可以理解为小业务功能的集合)
理解一:Business object业务对象、一个复杂的业务,往往包含多个小业务。
例如,一个订单信息BO,可能包含,1.订单基础信息(购买人,时间,状态等基础信息) 2.订单支付信息 3.订单优惠券信息 4.订单收货信息 5.订单售后信息 6.订单退款信息等。
把一个个订单信息对应一个个PO,组装到一起是BO.
理解二:BO就是PO的组合,简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象。复杂点儿的例子PO1是交易记录,PO2是登录记录,PO3是商品浏览记录,PO4是添加购物车记录,PO5是搜索记录,BO是个人网站行为对象。
BO是一个业务对象,一类业务就会对应一个BO,数量上没有限制,而且BO会有很多业务操作,也就是说除了get,set方法以外,BO会有很多针对自身数据进行计算的方法
为什么BO也画成横跨两层呢?原因是现在很多持久层框架自身就提供了数据组合的功能,因此BO有可能是在业务层由业务来拼装PO而成,也有可能是在数据库访问层由框架直接生成
很多情况下为了追求查询的效率,框架跳过PO直接生成BO的情况非常普遍,PO只是用来增删改使用
我的理解是BO是一个抽象的概念。
五、DTO(用于方法之间互相传递数据,如Service之间)
Data Transfer Object数据传输对象,服务之间数据传输对象,仅仅包括调用方想要的数据对象,可以由PO、Entity转换得到,有时候有人偷懒也会把DTO直接传给前端,更甚于会把Entity的结构直接传回前端。
六,DAO(类似一个分类,用于标明里面是跟数据库相关的内容)
也可以不要,直接就写Mapper和Entity也可以的。
POJO(Plain Ordinary Java Object无规则简单Java对象)
不与数据库打交道的简单对象,POJO是DTO/BO/VO的统称
信息来源:https://blog.csdn.net/sinat_16998945/article/details/124664505
信息来源:https://zhuanlan.zhihu.com/p/102389552
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。