【问题标题】:Design pattern for DTODTO 的设计模式
【发布时间】:2014-06-17 18:12:55
【问题描述】:

我有一个使用 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 );

   }

哪种方法是正确的??

【问题讨论】:

    标签: java design-patterns data-transfer-objects


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      更多关于 DTO 的信息

      Data Transfer Object

      LocalDTO

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-23
          • 2017-12-20
          • 2023-03-14
          • 2012-09-15
          • 2021-03-17
          • 2019-10-22
          • 2019-05-01
          • 1970-01-01
          • 2013-04-02
          相关资源
          最近更新 更多