Spring层次架构和VO\DTO\DO\PO

 一,MVC和三层架构

Spring层次架构和VO\DTO\DO\PO_第1张图片

二,Spring项目基本架构层次

架构层次 常见包名 说明
表现层 controller  存放控制器类,处理用户请求和返回响应。在 Spring MVC 中,控制器类使用 @Controller 或 @RestController 注解。
服务层 service 存放服务类,实现具体的业务逻辑。服务类通常使用 @Service 注解。
数据访问层 repository 存放数据访问对象(DAO)或仓库(Repository)接口和实现类,负责与数据库交互。使用 Spring Data JPA 时,仓库接口通常继承自 JpaRepository 等接口;使用 MyBatis 时,DAO 接口定义 SQL 操作方法。
实体层 entity  存放实体类,对应数据库中的表结构。实体类使用 JPA 注解(如 @Entity@Id)进行映射。
配置层 config 存放 Spring 配置类,使用 @Configuration 注解,用于配置数据源、事务管理器、组件扫描等。
工具层 utils 存放通用的工具类,提供日期处理、字符串处理、加密解密等通用功能。
异常处理层 exception 存放自定义异常类和异常处理器,用于统一处理项目中抛出的异常。
常量层 constants 存放项目中使用的常量,如状态码、错误信息、配置参数等。

三,分层对象模型

类型 所在层级 作用
VO(View Object) 表现层(前端或后端表现层与前端交互部分) 1. 为视图展示而设计,封装了用于前端页面展示的数据,数据格式通常贴合前端页面的展示需求。
2. 可包含一些视图层面的格式化信息,如日期格式、金额格式等,方便前端直接展示。
DTO(Data Transfer Object) 表现层与服务层之间 1. 用于不同层之间的数据传输,尤其是在表现层和服务层之间传递数据。
2. 去除了仅用于视图展示的信息,只保留与业务逻辑相关的数据,可对数据进行进一步整理和规范,以适应服务层的业务处理需求。
3. 可以组合多个实体的数据,将不同来源的数据整合到一个 DTO 中进行传输。
DO(Domain Object) 服务层 1. 代表业务领域中的对象,封装了业务逻辑和业务规则,是业务操作的核心载体。
2. 包含业务领域的属性和行为,用于在服务层进行业务逻辑的处理和计算。
3. 与业务领域的概念紧密相关,反映业务的真实状态和规则。
PO(Persistent Object) 数据访问层 1. 与数据库表结构一一对应,是数据库记录在内存中的映射对象。
2. 主要用于数据的持久化操作,如将数据从数据库读取到内存中封装成 PO,或将 PO 中的数据保存到数据库中。
3. 包含与数据库表字段对应的属性,通常使用 ORM(对象关系映射)框架进行数据库操作。

DAO层返回PO,Service层将其转换为DTO/VO再向上传递。

DO:“数据 + 行为”一体化,避免业务逻辑分散在Service层,实现高内聚。

完整的数据流转流程

  1. 前端传递 VO:前端页面将用户输入的数据封装成 VO 发送给后端表现层(Controller 层)。
  2. 表现层转换为 DTO:Controller 层接收到 VO 后,将其转换为 DTO,去除一些仅用于视图展示的信息,保留与业务逻辑相关的数据。
  3. 表现层将 DTO 传递给服务层:Controller 层调用服务层的方法,将 DTO 传递给服务层。
  4. 服务层转换为 DO:服务层接收到 DTO 后,将其转换为 DO(Domain Object)。DO 是业务领域中的对象,包含了业务逻辑和业务规则,服务层会根据业务需求对 DO 进行处理。
  5. 服务层调用 DAO 层:服务层执行业务逻辑后,调用 DAO(Data Access Object)层的方法进行数据持久化操作。
  6. DAO 层转换为 PO:DAO 层接收到 DO 后,将其转换为 PO(Persistent Object)。PO 通常与数据库表结构一一对应,DAO 层将 PO 中的数据保存到数据库中

你可能感兴趣的:(学习)