在标准的Spring MVC应用程序中,我有一个表示层,控制器层,服务层,存储库/持久层,在发送到演示文稿之前,哪个层应负责将从DB检索到的数据转换为DTO ?
一方面,我认为它应该在Controller层,因为它特定于演示文稿所需的数据,而不是“业务逻辑”本身,但是,另一方面,我有一种唠叨的感觉,即在控制器中输入智能(即:知道在DTO中填充哪些字段)实际上不是控制器的工作,应该降级到服务层。
我意识到这可能是一个“灰色”区域,但有推荐做法吗?
答案 0 :(得分:0)
老实说,我不知道推荐的做法,但我可以告诉你到目前为止我所做的项目是如何完成的。
从数据库中检索的数据(假设 Entity )被映射到 EntityMapper 类中的相应Java类,该类当然依赖于Repository层,因为它是一个DAO操作。
应用于其上的任何业务逻辑都应该在服务层中解决,服务层将其传递给Controller。
如果您不想检索实体中的所有数据库数据(例如ID,不必要的列等),控制器必须返回但数据,您可以将它们转换为服务器 - 客户端DTO,这意味着您可以拥有类似的 EntityPresentation (愚蠢的名字,我知道)类,但是如果字段较少,则会通过Controller将其传递给表示层。