2014-06-17 5 views
0

J'ai une application Web utilisant jdbc pour les appels de base de données. J'ai un service, couche dto et dao. J'ai une requête xml qui est énorme. Puis-je passer l'objet de requête à la méthode dao ou dois-je transférer la requête à un modèle dto puis passer l'objet dto comme paramètre à ma méthode dao? Quelle est la bonne approche?Modèle de conception pour 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); 

    } 

Quelle est la bonne approche?

Répondre

2

Cela dépend de votre architecture, mais comme DTO est Data Transfer Object il n'y a aucune raison de les utiliser entre les couches de service et dao. Je peux en avoir un pour la couche de service, comme dans l'exemple de code ci-dessous, mais cela dépend de l'architecture de votre application.

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

    } 

Plus sur

de DTO

Data Transfer Object

LocalDTO

2

Je ne pense pas qu'il y ait une bonne ou mauvaise réponse. C'est assez subjectif à mon avis. Mais j'aime personnellement avoir une couche mince entre les contrôleurs et les services (en supposant que vous utilisez le modèle MVC), que sa seule tâche est de convertir les requêtes (XML, Json, etc.) en objets de domaine.

Il est très utile lorsque vous avez des objets de domaine complexes ou des agrégats dont vous avez besoin d'afficher des informations dans une vue.

0

YAGNI est une bonne idée, garder un design simple, si possible

+0

bon point mais un lien vers une explication de l'acronyme serait encore mieux (http://stackoverflow.com/help/how-to-answer) – xmojmr

0

DTO sont vraiment destinés à des appels à distance. Si vous envoyez des données sur le réseau à une autre machine virtuelle, utilisez un DTO. Si vous envoyez des données à une autre classe locale sur la même machine virtuelle, ne vous embêtez pas avec un DTO. Un DTO est juste un moyen efficace de transférer des données à distance. Il n'a vraiment aucun avantage ailleurs.

Questions connexes