Entity Class 到 DTO Class 的转换应该在哪一层处理?

Posted

技术标签:

【中文标题】Entity Class 到 DTO Class 的转换应该在哪一层处理?【英文标题】:At what layer should the conversion from Entity Class to DTO Class be handled? 【发布时间】:2021-05-17 04:37:02 【问题描述】:

从标题可以理解,我对Entity Class到DTO Class的转换很感兴趣。 根据我在 *** 和其他网站上的研究,如果我使用任何 ORM 工具,DAO 类应该总是返回实体对象。但是如果我使用 JDBCTemplate 呢?或者如果我使用 JDBC?那么我应该在哪一层进行从Entity到DTO的转换? DAO 也是?还是在服务层?如果您的回答在技术上具有解释性,我将不胜感激。

【问题讨论】:

你能提供一个DTO和Entity的例子吗?请。当然,它可以是任何假课程。 【参考方案1】:

您的 DTO 或模型层将包含实体。 DAO 或存储库层将通过 JPA 处理 CRUD 操作,并且只允许与 DTO/实体对象交互。最后是服务或适配器层,它通过调用 DAO 层的方法将 DTO 转换为所需的其他类型。

在 JDBC 的情况下,DTO 层可以充当 POJO 层。我相信基于 JPA 的 DAO 层可以基于 JDBC 来执行查询,构建 POJO 对象并将它们返回给服务层。所以最终它只是将基于JPA的DAO层替换为基于JDBC。

【讨论】:

谢谢,我知道我需要在服务层处理 JPA 的 DTO 转换,但是如果我不使用 JPA 并使用 JDBCTemplate 或者如果我使用 JDBC,那么我应该在哪里进行此转换?

以上是关于Entity Class 到 DTO Class 的转换应该在哪一层处理?的主要内容,如果未能解决你的问题,请参考以下文章

NestJS > TypeORM 将复杂实体映射到复杂 DTO

NestJS DTO 类设置 class-validator 和 class-transformer 执行顺序

Spring Data Jpa 自定义 repository 转 DTO

springboot~ObjectMapper~dto到entity的自动赋值

Caused by: java.lang.IllegalStateException: Serialized class cn.bloghut.dto.ProducterDto must implem

java项目中VO和DTO以及Entity,各自是在啥情况下应用的