2014-06-17 3 views
0

У меня есть веб-приложение, использующее jdbc для вызовов базы данных. У меня есть сервис, dto и dao layer. У меня есть запрос xml, который огромен. Могу ли я передать объект запроса методу dao или передать запрос модели dto, а затем передать объект dto в качестве параметра для моего метода dao? Какой правильный подход?Шаблон проектирования для DTO

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); 

    } 

Какой правильный подход?

ответ

2

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

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

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

    } 

Подробнее о DTO-х

Data Transfer Object

LocalDTO

2

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

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

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

0

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

+0

хорошая точка, но ссылка на объяснение акронима будет еще лучше (http://stackoverflow.com/help/how-to-answer) – xmojmr

0

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

Смежные вопросы