3
respostas

Sobre arquitetura

Boa tarde, amigos.

Gostaria de saber a opinião de vocês sobre uma questão de arquitetura: receber Model ou DTO nos métodos de entrada de dados?

Entendo que há riscos em se receber um Model (ou Entity, como preferir chamar) diretamente ao invés do DTO. Você tem menos controle sobre o conteúdo e etc... Um DTO vai te dar muito mais controle já que terá que fazer a conversão para o Model e, no processo, poderá conhecer e garantir quais dados serão persistidos.

Entretanto, a utilização de DTO na entrada de dados vai nos forçar a duplicar as anotações que constam no Model (Entity), o que parece uma prática ruim.

Sei que decisões de arquitetura tipicamente são um "trade-off", de modo que cada opção tem seu lado bom e ruim. Então, gostaria de saber a opinião de vocês.

Abraços a todos.

3 respostas

Estava pensndo aqui... seria uma boa ideia usar a classe de modelo (entity) pra receber dados num método de entrada (PUT, por exemplo), mas tratá-la como um DTO?

Assim nós podemos unir o melhor dos dois mundos: aproveitamos as anotações de validações sem duplicá-las, e fazemos o controle dos dados instanciando um segundo objeto da mesma classe que, este sim, será persistido.

Alguém adota essa prática?

Oi Michel,

Teve um post que mencionei as vantagens/desvantagens de se utilizar DTOs ao invés de entidades na "entrada/saída" da API.

Dá uma lidinha e veja se fica mais claro: https://cursos.alura.com.br/forum/topico-uso-excessivo-de-dtos-144681

Bons estudos!

Obrigado, Rodrigo! Vou dar uma olhada.