项目分层开发中,DTO、BO、PO、VO的含义

简介: java springBoot项目

在后端开发中,比如传统的MVC架构和现在流行的DDD架构,经常回使用到几种对象的概念

DTO (Data Transfer Object) 数据传输对象: DTO设计模式用于将数据从服务端传输到客户端,或者在不同的服务之间传递。通常,DTO包含了特定业务场景需要的数据结构,并且不包含任何业务逻辑。它简化了不同服务或模块之间的交互,使得各个层之间的耦合度降低。

BO (Business Object) 业务对象: BO代表了业务逻辑层中的对象,封装了与某个业务相关的数据以及针对这些数据的操作逻辑。一个BO可能由多个实体属性组成,并处理涉及多个实体的复杂业务逻辑。

PO (Persistent Object) 持久化对象: PO主要用来表示数据库表的一条记录,它的属性和数据库表的字段相对应。通常在持久层(如Hibernate、JPA等ORM框架)中使用,主要用于操作数据库,如保存、更新和查询数据。

VO (Value Object) 值对象: VO是视图层的对象,通常用于封装展示给用户的数据,它可以和数据库表对应,也可以根据UI界面需求进行定制。VO的主要目的是在页面展示时只携带必要的数据,从而避免把大量不必要的数据暴露给前端。

这个是PO类

@Data
public class User implements Serializable{
private Long id;

private String username;

private String password;

private String identityCard;

private String gender;

private String location;

private String userImage;

private String phoneNumber;

private String createTime;

private String updateTime;

@TableLogic
private int isDelete;

}

UserDTO类

@Data
public class UserDTO implements Serializable{
private Long id;

private String username;

private String password;

private String identityCard;

private String gender;

private String location;

private String userImage;

private String phoneNumber;

}

UserLoginBO、UserUpdateBO

@Data
public class UserLoginBO implements Serializable{
private String username;

private String password;

}

@Data
public class UserUpdateBO implements Serializable{
private Long id;

private String username;

private String password;

private String identityCard;

private String gender;

private String location;

private String userImage;

private String phoneNumber;

}

UserDTO是一个大的入口,它可以接收整个模块的参数

BO则是在进入Service层之前对UserDTO的数据进行过滤,并且对边界进行控制

最后在进入infra层之前转为PO

其实BO也可以像UserDTO那样,直接一个UserBO包含UserLoginBO和UserUpdateBO,单纯的做模型转换,不做值过滤也可以

在后端开发中是这么使用的

目录
相关文章
|
前端开发 数据库 微服务
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
2431 0
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
|
设计模式 开发框架 前端开发
项目开发中,真的有必要定义VO,BO,PO,DO,DTO这些吗?
存在即是合理的,业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性,都是前辈血淋淋的宝贵经验,为什么不用?
|
Java 数据库连接 数据库
|
9月前
|
SQL JSON 前端开发
较为完整的SpringBoot项目结构
本文介绍了SpringBoot项目的分层结构与目录组成。项目分为四层:**controller层**(前端交互)、**service层**(业务逻辑处理)、**dao层**(数据库操作)和**model层**(实体类定义)。分层设计旨在实现关注点分离,降低耦合度,提高系统灵活性、可维护性和扩展性。此外,还详细说明了项目目录结构,包括`controller`、`service`、`dao`、`entity`、`param`、`util`等子目录的功能划分,便于团队协作开发。此架构有助于前后端分离,明确各模块职责,符合高内聚低耦合的设计原则。
5978 1
|
Java Spring
SpringBoot接收参数的方式
本文介绍了Java Spring Boot中处理GET请求的多种方式。可以使用方法参数直接接收,或者通过`@RequestParam`注解指定必传参数。此外,可以用实体类接收多个相关参数,但不能同时使用`@RequestParam`。还可以通过`HttpServletRequest`对象获取参数,或利用`@PathVariable`接收路径变量。对于数组和集合参数,需注意使用`@RequestParam`注解。
1564 1
|
设计模式 开发框架 Java
分清 PO、VO、DAO、BO、DTO、POJO 含义
分清 PO、VO、DAO、BO、DTO、POJO 含义
1397 1
|
存储 设计模式 Java
阿里官方代码规范
这篇文章详细介绍了阿里巴巴官方的代码规范,包括命名规则、常量使用、方法覆写、并发处理、注释规范、数据库设计等多个方面,旨在提高代码的可读性、维护性和扩展性。
|
设计模式 开发框架 前端开发
VO、PO、DTO的区别
VO、PO、DTO的区别
1348 3
|
IDE Java Spring
Spring Boot中的多模块项目构建
Spring Boot中的多模块项目构建
|
JSON Java API
使用Spring Boot实现RESTful API
使用Spring Boot实现RESTful API