使用 Spring MVC 我们通常会看到 Controller、Service 和 Repository 层。 Repository 层使用 Entity 模型,它与数据库是一对一的映射。我想到了以下 -
- Service 层应该使用相同的 Entity 模型吗?
- 服务层应该使用单独的域模型吗?如果是,那么往返映射应该在服务层完成吗?
- Controller 层我们应该使用相同的 Domain 模型吗?
- Controller 层应该使用单独的 DTO 模型吗?如果是,那么往返映射应该在 Controller 层完成?
- 我们是否有任何简单的方法可以在不编写太多冗长代码的情况下进行映射?我过去用过几次 Dozer。
这个问题可能有人问过,但我找不到。所以请原谅我重复的问题。
最佳答案
- 是的。
- 没有。该服务应在 Repository 对象返回的实体模型上工作。
- 没有。 Controller 应使用 DTO。 DTO 应包含表单字段和验证注释(如果您使用的是 JSR303)。
- 是的。 DTO 在 Controller 层中使用。 DTO 应该公开一个接受实体模型的构造函数。实体模型到 DTO 的转换是在这个构造函数中完成的。实体模型的情况相同。实体模型还应该公开一个重载的构造函数,它接受 DTO 对象作为参数。 DTO 到实体模型的转换应在此处进行。
- DTO(实体模型作为参数)和实体模型(DTO 作为参数)的重载构造函数是冗长的。
关于java - MVC 架构 DTO/模型映射/转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34988293/