0

我有一个使用 jdbc 进行数据库调用的 Web 应用程序。我有一个服务、dto 和 dao 层。我有一个很大的请求 xml。我可以将请求对象传递给 dao 方法,还是应该将请求传递给 dto 模型,然后将 dto 对象作为参数传递给我的 dao 方法?哪个是正确的方法?

public TestServiceClass addSurveySubmitDetails(TestRequestXML testRequestXML){
          //call to dao method
          TestDao = testdao = new TestDao(testRequestXML);

   }

         OR

    public TestServiceClass addSurveySubmitDetails(TestRequestXML testRequestXML){

         //create dto object
         TestDTO testDTO = new TestDTO();
         testDTO .setId(testRequestXML);

          //call to dao method
          TestDao = testdao = new TestDao(testDTO );

   }

哪个是正确的方法?

4

4 回答 4

2

这取决于您的架构,但由于DTOData Transfer Object没有理由在服务层和 dao 层之间使用它们。

你可以有一个服务层,我想就像下面的代码示例一样,但无论如何它取决于你的应用程序的架构。

   public TestServiceClass addSurveySubmitDetails(TestDTO testDTO){
          TestRequestXML testRequestXML = testDTO.getId();
          TestDao = testdao = new TestDao(testRequestXML);

   }

更多关于 DTO 的信息

数据传输对象

本地DTO

于 2014-06-17T18:18:18.280 回答
2

我认为没有正确或错误的答案。在我看来这是相当主观的。

但我个人喜欢在控制器和服务之间有一个薄层(假设您使用的是 MVC 模式),它的唯一任务是将请求(XML、Json 等)转换为域对象。

当您有复杂的域对象或需要在视图中显示信息的聚合时,它非常有用。

于 2014-06-17T18:20:47.727 回答
0

YAGNI 是个好主意,尽可能保持简单的设计

于 2014-06-20T12:06:25.057 回答
0

DTO 真正用于远程调用。如果您通过网络将数据发送到不同的虚拟机,请使用 DTO。如果您要将数据发送到同一虚拟机上的另一个本地类,请不要使用 DTO。DTO 只是一种远程传输数据的有效方式。它在其他任何地方都没有任何优势。

于 2017-04-24T18:37:33.107 回答