1.PO持久对象
PO就是对应数据库中某个表中的一条记录,一个表就是一个类,每张表的字段就是类中的一个属性。
多个记录可以用PO的集合。PO中应该不包含任何对数据的操作。
2、DO(Domain 0bject)领域对象
就是从现实世界中推象出来的有形或无形的业务实体。
3.TO(Transfer 0bject),数据传输对象传输的对象
不同的应用程序之间传输的对象。微服务里面不同的服务之间的对象最终需要发出去, 被发出去的这些对象 即 TO
4.DTO(Data Transfer Obiect)数据传输对象
比如:现在有一张表,表内有10个字段,对应的PO有10个属性,现在的需求是只需要5个字段,就不需要将10个字段都传递过去,只需要传5个即可。这个被传输的5个字段就是DTO。
这个概念来源于J2EE的设汁模式,原来的目的是为了EJB的分布式应用握供粗粒度的数据实体,以减少分布式调用的次数,从而握分布式调用的性能和降低网络负载,但在这里,泛指用于示层与服务层之间的数据传输对象。
5.VO(value object)值对象
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。用new关韃字创建,由GC回收的
= View object:视图对象
用于接受页面传递来的对象,封装对象
将业务处理完成的对象,封装成页面要用的数据, 响应出去的一般都是自定义的信息而不是实体类的完整属性(比如: 用户信息,最终封装之后是去掉了密码)
6.BO(business object)业务对象
从业务模型的度看.见IJML元#领嵫模型的领嵫对象。封装业务逻辑的java对象,通过用DAO方法,结合PO,VO进行业务操作。businessobject:业务对象主要作用是把业务逻辑封装为一个对苤。这个对象可以包括一个或多个其它的对彖。比如一个简历,要有教育经历、工怍经历、社会关系等等。我们可以把教育经历对应一个PO工作经历 (将教育经历对应的PO, 工作经历对应的PO, 社会关系对应的PO 三者合起来组成一个业务对象, 叫简历, 用专门一个类封装这三个属性, 该类的对象就是 BO )
7、POJO简单无规则java对象
8、DAO (就是常用的操作数据库的对象)
- VO,DTO的关系
- 页面展示的数据是VO,VO需要转换成DTO在传给Service层(需要的5个字段),根据DTO传输的数据,构造BO(业务逻辑对象),BO存放在com.xxx.business包下,在BO这一段处理完具体的业务逻辑,之后更新到数据库,此时又转成PO,用PO进行持久化存。
- 为什么需要VO?
需求:
- 规格参数新增时,请求的URL:Request URL: http://localhost:88/api/product/attr/base/list/0?t=1588731762158&page=1&limit=10&key=
- 当有新增字段时,我们往往会在entity实体类中`新建一个字段,并标注数据库中不存在该字段·
如在一些Entity中,为了让mybatis-plus与知道某个字段不与数据库匹配, 那么就加个 @TableField(exist=false) private Long attrGroupId;
然而这种方式并不规范,比较规范的做法是,新建一个vo文件夹,将每种不同的对象,按照它的功能进行了划分。