Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre classes DTO

Olá, minha dúvida é que toda vez que eu quiser que uma classe tenha mais detalhes eu terei que criar uma classe "dtoDetalhes" por exemplo:

normalClass: field id; field name; field email; field password;

normalClassDto: field id; field name; field email;

normalClassDtoDetails: field id; field name; field email; field password;

ou seja para um modelo eu teria que ter X quantidade de de classes para determinar quais campos desejo puxar com a minha necessidade.

segundo o professor para boas práticas não devemos chamar a nossa classe modelo direto precisamos de uma classe dto.

isso e um pouco desgastante na minha opnião, não teria uma forma melhor de fazer isso ?

2 respostas
solução!

Oi Pablo,

Devolver a entidade no controller nao e uma boa por conta da JPA(podem ter atributos lazy) e por conta de que dessa maneira estariamos expondo todos os atributos dela.

Ate daria para utilizar a anotacao @JsonIgnore nos atributos que nao queremos devolver, mas isso meio que mataria a flexibilidade, pois esse atributo nunca mais seria exposto e pode ser que em alguma tela do frontend precisamos o expor.

A boa pratica entao seria utilizar classes DTO expondo apenas os campos necessarios, e se tiver a necessidade de ter multiplas representacoes da mesma entidade, criar multiplos DTO. Porem, isso nem sempre vai ser necessidario, pois muitas entidades terao apenas um DTO.

Realmente tem a desvantagem de ficar criando esses multiplos DTOs e fazendo a conversao, mas por outro lado tem a vantagem da flexibilidade e seguranca.

Toda solucao sempre tera suas vantagens e desvantagens e devemos avaliar qual delas faz mais sentido para o contexto do problema.

bons estudos!

show cara, não tinha pensado por este lado.