vo,dto,po的区别

pojo:对应数据表的实体类

pojo有人也写为po,entity,domain:代表系统中的一个具体的实体,如用户、订单、产品等。通常是将其映射到数据库表的对应实体,包含该实体的属性和相关方法。

个人理解:就是数据表有什么字段,entity实体类都有对应的字段。当实体类属性名和数据库表的字段名不一致时,我们都会通过这个类的属性和表的字段一一对应。

例子:user实体类对应数据库表

@Entity
@Table("user")
public class User {
    //用户
    private String username;
    //年龄
    private String age;
    //地址
    private String addr;
}

dto:接收前端传来的数据

DTO(数据传输对象):用于在不同应用程序层之间传输数据。通常是为了降低网络或系统开销、提高性能而设计的,包含那些在应用程序层之间传输的类和对象。

个人理解:dto就是定义接收前端发送的消息,这些消息放到一个DTO实体类中,这个实体可能结合了多个实体类的字段。

例子:

  • UserDTO
public class UserDTO extends User {
    //第几页
    private Integer page;
    //每页多少条
    private Integer size;
}
  • controller接收参数
@RestController
public class UserContrller {

    @PostMapping("/findUser")
    public void findPageByUser(@RequestBody UserDTO userDTO){

    }
}

vo:返回给前端的数据

VO(值对象):又称为数据传输对象(DTO),用于在展示层显示数据,通常是将表示数据的实体对象中的一部分属性进行选择性的组合形成的一个新对象,目的是为了满足展示层数据要求的特定数据结构。

个人理解:就是将需要返回给前端显示的数据封装到vo中。vo可能是一张表的几个字段,也可能是多个表的字段凑到一起,然后通过vo返回。

例子:

  • vo实体
public class UserVO {
    private String username;
    private String addr;
}
  • 返回前端
    @PostMapping("/findUser")
    public UserVO findPageByUser(@RequestBody UserDTO userDTO){
        UserVO userVO = new UserVO();
        userVO.setUsername("张三");
        userVO.setAddr("北京");
    return userVO;
    }

bo:controller层和service层调用时的实体类

BO(业务对象):位于应用程序的业务层,封装了业务逻辑和流程,同时与数据存储和表现层相分离。它提供了对实体的管理和操作方法,常用于处理一些涉及到多个实体的复杂业务场景。

个人理解:就是在业务逻辑层,controller层之间相互调用时,处理业务逻辑时,可增加数据或减少数据的实体。

AO: 比较复杂的实体类

AO(组合对象):与BO类似,但是它代表的是一组相关的业务对象,常用于批量操作和复杂关联查询等场景。

后面两个用的少,就不多介绍了。

每个公司的代码要求是不一样的,有的接收请求参数用xxxParam,返回数据用xxxRep,大家根据需要创建,能理解就好。

结束!!!!!
hy:9


		年轻人,去结婚吧,如果你有个美丽的妻子,你会生活得幸福;如果不是,你会和我一样变成个哲学家。---苏格拉底

你可能感兴趣的:(微服务,java,数据库,servlet)