简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌

这篇具有很好参考价值的文章主要介绍了简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这些只是开发的规范,规范就是建议遵守的,大家都这样做,长期以来就形成了一种开发规范,便于我们开发。
DO、BO、DTO、VO、AO他们都是普通的Java类,只不过通常我们把他们放在DO、BO、DTO、VO、AO名的包下,结尾以DO、BO、DTO、VO、AO命名放在这些包下的类。

有时DO也会放在名为PO(Persistent Object)的包下

DO

DO(Data Object)
先介绍最简单的DO,一个DO你就可以理解为一张Mysql里的表,不过这个表是实体的一个Java类,一个DO的对象就表示mysql里的一条数据。

准确的说,DO也并不是对应于Mysql的一张表,可以表示应用程序中任何一个具有实体属性的对象。一般来说DO应该包含业务属性和持久化属性两个方面,既保证了业务对象的正确性和完整性,又保证了数据的可持久化和可恢复性。

下面是一个DO的例子。

package com.xut.yiban.user.entity.po.dormitory;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 宿舍类
 * @author kerwin
 * @create 2023-04-17 13:02
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Dormitory {
    /**
     * 宿舍号 复合主键1
     */
    @TableId(type = IdType.NONE)
    private String dorm_num;

    /**
     * 宿舍楼
     */
    private String dorm_building;

    /**
     * 学院id
     */
    private int college_id;

    /**
     * 校区id
     */
    private int campus_id;

}

DTO

DTO(Data Transfer Object)
DTO 简单理解就是接收前端传递过来的数据的,比如前端给你传递一个POST请求,你想用对象进行接收,此时我们就会使用DTO对象来接收。

下面是一个DTO的例子,我们用SaveCheckMissionDTO类来接收前端传递过来的POST请求的请求体对应参数

    /**
     * 功能模块:宿舍检查
     *
     * 用于存储一次检查任务的发布
     * @param saveCheckMissionDTO 一个封装的接收类
     * @return
     */
    @PostMapping("/set_and_publish_check")
    public HttpResult publish_check(@RequestBody SaveCheckMissionDTO saveCheckMissionDTO){
        return dormitoryService.publish_check(saveCheckMissionDTO);
    }

SaveCheckMissionDTO类如下

/**
 * 用于接收的前端传递的参数的类
 * @author kerwin
 * @create 2023-04-18 0:09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SaveCheckMissionDTO {
    private Map<String,ArrayList<String>> checkRange;
    private String percent;
    private String startTime;
    private String endTime;
    private String excelInfo;
    private ArrayList<TeacherinfoDTO> teachers;
}

VO

VO(View Object)
VO简单来说,就是我们返回给前端数据用的对象就是VO,比如你从数据库查了一些表的部分信息,封装之后,要返回给前端,此时你就你可以用一个VO来进行封装,返回给前端。

在实际项目中也可能存在根据具体接口和需求创建独立AO类的情况。

举例如下

    @Override
    public HttpResult judge_previous_status() {
        PreviousInfoVO previousInfoVO = dormitoryMapper.judge_previous_status();
        return previousInfoVO==null? HttpResult.success():HttpResult.success(previousInfoVO);
    }

一个VO类的例子

/**
 * 查询有没有正在进行的查寝任务,有的话把这个返回
 *
 * @author kerwin
 * @create 2023-04-26 19:48
 */
@Getter
@Setter
public class PreviousInfoVO {
    private String startTime;
    private String endTime;
}

BO

BO(Business Object)
BO作为服务层的对象,举个例子,针对一个在线商店,商店中的商品、订单和用户等都属于业务对象。以商品为例,商品有价格,商品描述等属性,还有一些添加商品、删除商品的方法,那么用于描述商品的一个类,我们就可以归类为BO。

public class ProductBO {
    private String productId;
    private String productName;
    private BigDecimal price;
    private String description;
    // getter and setter methods
    
    public void addProduct(ProductDO product) {
        // 根据业务逻辑处理商品添加操作
    }
    
    public void updateProduct(ProductDO product) {
        // 根据业务逻辑处理商品更新操作
    }
    
    public void deleteProduct(String productId) {
        // 根据业务逻辑处理商品删除操作
    }
    
    public List<ProductVO> queryProductList() {
        // 根据业务逻辑查询商品列表,并将结果转换为VO返回
    }
}

AO

AO(Action Object)
以上面的商品BO为例,一个商品BO周边应该还会有一些行为,比如获取商品列表,根据关键字搜索商品,添加商品到购物车等等的行为,这每一个行为,其实都可以作为一个AO类来创建。

而实际上AO有时还会被理解成为Application Object,对于AO笔者了解的并不是特别多,如果后续有深入了解,会回来更新这篇博客

感谢你的观看!!💕💕

如果看完文章后你有所收获,且非常有条件的话,请给我点个赞吧,谢谢!文章来源地址https://www.toymoban.com/news/detail-427821.html

到了这里,关于简单易懂的理解java开发中的 DO、BO、DTO、VO、AO都是什么✌的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 对 PO、BO、DTO、VO 的理解

    PO【persistant object】 持久对象,对应数据库的表。 BO【persistant object】 业务对象,将业务逻辑封装成一个对象。可以理解为 PO 的组合,例如:我们可以以教育经历、工作经验、社会关系作为 PO,将这三者封装成一个简历(BO)。 DTO【Data Transfer Object】 数据传输对象,用在需要

    2023年04月13日
    浏览(35)
  • 后端开发基础概念 Entity,DAO,DO,DTO,VO, Service,Controller

    Entity主要用于ORM(对象关系映射)框架中,如Hibernate、MyBatis等,以便将数据库中的数据映射为对象,方便进行业务操作。 Entity通常与数据库表一一对应,代表 业务数据 的基本单元。 通常放在项目的model或entity包下。   DAO(数据访问对象): DAO是连接业务逻辑和数据库的桥

    2024年04月08日
    浏览(37)
  • PO、VO、DAO、BO、DTO、POJO区分

    DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。 DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。 BO(Business Object):业务对象,由 Service 层输出的封装业务逻辑的对象。 AO(ApplicationObject):应用对象,在Web层与Service层之间抽象的

    2024年02月05日
    浏览(38)
  • springboot中entity层、dto层、vo层通俗理解三者的区别

    entity :这个类的属性是跟数据库字段一模一样的(驼峰命名),当我们使用MyBatis-Plus的时候经常用得到。 dto :用于后端接收前端返回的数据,一般是post请求,前端会给我们返回一个json对象,我们这个dto就用于接收这个json对象,dto的每个属性名和json对象的key是对应的。 v

    2024年02月10日
    浏览(34)
  • 控制系统中的AI、AO、DI、DO是什么意思——控制系统基础知识

      控制系统中AI、AO、DI、DO是集散控制系统中模块上常见的一些基本标注,好处就是便于分清什么类型量的设备,方便前期的产品选型及后期的维修与保养。   同时将现场模拟量仪表和开关量设备等进行清晰分类,便于后期仪表和设备的弱电信号接线。 其实很简单,AI、

    2024年01月20日
    浏览(44)
  • VO和DTO有什么区别?

            在Java开发中,VO和DTO都是用于数据传输的对象,但它们的含义和用途有所不同。 VO(Value Object)通常是用于表示业务领域中的一个值对象,它是一个纯粹的数据对象,主要用于封装从业务层传递到UI层的数据,以便于UI层展示或者接收用户输入。VO通常不包含业务逻

    2024年02月10日
    浏览(33)
  • DTO,VO,PO的意义与他们之间的转换

    DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。再通俗一

    2024年02月11日
    浏览(35)
  • java中的DTO

    在Java中,DTO代表数据传输对象(Data Transfer Object)。DTO是一种设计模式,用于在应用程序的不同层之间传输数据。DTO通常用于将数据从一个层(如持久化层)传递到另一个层(如视图层)。 DTO的主要目的是封装数据, 将前端发送的数据封装为一个java对象 ,使得数据可以在不

    2024年02月09日
    浏览(36)
  • springboot苍穹外卖实战:一、环境搭建(nginx启动失败解决方案+Entity、DTO、VO、POJO区别说明+nio.charset.Input length = 2报错解决)

    在资料的day01中有个“前端运行环境”的文件夹,将其中的\\\"nginx-1.20.2\\\"文件夹解压到 非中文目录 下,然后直接点击文件夹中的nginx.exe(闪退不要紧)。 然后在浏览器中直接输入localhost,如果出现以下页面,即说明前端启动成功。 启动失败解决方案 如果没有,可能原因是80端

    2024年04月12日
    浏览(136)
  • Python中的抽象类(简单易懂版)

    如果大家学过java语言的话,那么一定对抽象类不陌生。同样作为面向对象的语言,Python也有抽象类。 1.1什么是抽象类? 如果说,类是对一堆对象共同内容的抽取,那么抽象类就是对一堆类共同内容的抽取,包括:属性和方法。 1.2抽象类的特点 (1)抽象类必须包含一个或多

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包