相关推荐recommended
Java SpringBoot中的 Entity DTO VO 三者的关系 这篇就够了
作者:mmseoamin日期:2024-04-29

目录

一、Entity

二、DTO

三、VO

四、理解Entity、DTO、VO

五、Controller、Service、Dao层中的Entity、DTO、VO


一、Entity

Entity:它包含最基础的属性,这些属性直接映射到数据库表的列。Entity 通常用于数据库操作,比如 CRUD(创建、读取、更新、删除)操作。

二、DTO

DTO:它包含了 Entity 的所有属性,并且可能添加了一些额外的属性。这些额外的属性可能是为了满足特定的业务需求,或者是为了在不同的服务之间传输数据。DTO 通常用于服务层,用于不同服务之间的数据传输。

三、VO

VO:它只包含 Entity 的一部分属性。这些属性通常是领域逻辑所需要的,而不是所有的数据库字段。VO 通常用于领域逻辑层,用于处理领域相关的业务。

四、理解Entity、DTO、VO

Entity 是数据的骨架,只包含基础信息。

DTO 是 Entity 的扩展,包含了所有基础信息加上一些额外的信息。

VO 是 Entity 的子集,只包含领域逻辑所需要的部分信息。

五、Controller、Service、Dao层中的Entity、DTO、VO

1.Controller 层:这一层主要负责处理 HTTP 请求和响应,将用户的输入转换为服务层可以处理的请求,并且将服务层返回的响应转换为适当的 HTTP 响应。在 Controller 层中,你可能会遇到 DTO 和 VO。

        DTO:在 Controller 层接收或发送数据时,可能会使用 DTO。例如,当客户端发送创建用户的请求时,它可能会发送一个包含用户信息的 DTO。当服务层处理完请求后,Controller 可能会将一个包含响应数据的 DTO 发送给客户端。

        VO:如果 Controller 层需要将数据呈现给前端(如 AJAX 请求的 JSON 响应),它可能会使用 VO 来包装数据。VO 通常包含前端需要的少量信息,以便于渲染和显示。

2.Service 层:这一层包含了业务逻辑,负责处理来自 Controller 的请求,执行操作,并返回响应。在 Service 层中,你可能会遇到 DTO 和 Entity。

        DTO:Service 层可能会接收来自 Controller 的 DTO,进行业务逻辑处理,并且可能需要将 DTO 转换为 Entity 来进行数据库操作。处理完成后,Service 层可能会将结果封装在另一个 DTO 中,返回给 Controller。

        Entity:Service 层在处理业务逻辑时可能会直接使用 Entity,尤其是在与数据库交互时。例如,当需要更新或删除数据库中的记录时,Service 层会使用 Entity。

3.DAO 层(数据访问层):这一层负责与数据库交互,执行 CRUD 操作。在 DAO 层中,你只会遇到 Entity。

        Entity:DAO 层操作的是数据库中的实体,它使用 Entity 类来映射数据库表,并执行 SQL 查询来插入、检索、更新或删除数据。

        在整个过程中,Entity 是最基础的,它直接映射到数据库表。DTO 和 VO 是基于 Entity 的,但它们根据不同的需求进行了调整和扩展。DTO 更注重于数据的传输和业务逻辑的实现,而 VO 更注重于数据的展示。

在实际开发中,这三种对象可能会在不同的层次上使用,以确保数据的一致性和传输的效率。