Дизайн шаблона для DTO

У меня есть веб-приложение, использующее JDBC для вызовов базы данных. У меня есть сервис, dto и dao layer. У меня есть запрос 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 ответа

Я не думаю, что есть правильный или неправильный ответ. На мой взгляд, это довольно субъективно.

Но лично мне нравится иметь тонкий слой между контроллерами и сервисами (при условии, что вы используете шаблон MVC), что его единственной задачей является преобразование запросов (XML, Json и т. Д.) В объекты домена.

Это очень полезно, когда у вас есть сложные доменные объекты или агрегаты, из которых вам нужно показать информацию в представлении.

Это зависит от вашей архитектуры, но как DTO Data Transfer Object нет никакой причины использовать их между слоями сервиса и дао.

Вы можете иметь один для сервисного уровня, как я полагаю, как в примере кода ниже, но в любом случае это зависит от архитектуры вашего приложения.

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

   }

Подробнее о DTO

Объект передачи данных

LocalDTO

DTO действительно предназначены для удаленных звонков. Если вы отправляете данные по сети на другую виртуальную машину, используйте DTO. Если вы отправляете данные в другой локальный класс на той же виртуальной машине, не беспокойтесь о DTO. DTO - это просто эффективный способ удаленной передачи данных. Это не имеет никаких преимуществ в другом месте.

YAGNI - хорошая идея, по возможности придерживайтесь простого дизайна

Другие вопросы по тегам