【发布时间】:2011-02-07 17:53:40
【问题描述】:
在我的 Spring MVC 应用程序中,我在表示层中使用了 DTO,以便将域模型封装在服务层中。 DTO 被用作弹簧形式的支持对象。
因此我的服务看起来像这样:
userService.storeUser(NewUserRequestDTO req);
服务层将翻译 DTO -> 域对象并完成剩下的工作。
现在我的问题是,当我想从服务中检索 DTO 以执行更新或显示时,我似乎找不到更好的方法来执行此操作,然后使用多种方法进行查找,返回不同的 DTO喜欢...
EditUserRequestDTO userService.loadUserForEdit(int id);
DisplayUserDTO userService.loadUserForDisplay(int id);
但这种方法感觉有些不对劲。也许服务不应该返回像 EditUserRequestDTO 这样的东西,控制器应该负责从专用表单对象组装 requestDTO,反之亦然。
确实有单独的 DTO 的原因是 DisplayUserDTO 是强类型为只读的,并且用户的许多属性是数据库中查找表中的实体(如城市和州),因此 DisplayUserDTO 将具有字符串属性的描述,而 EditUserRequestDTO 将具有支持表单中选择下拉列表的 ID。
你怎么看?
谢谢
【问题讨论】:
标签: java spring architecture spring-mvc n-tier-architecture