1
resposta

API Rest spring boot - Entity ou DTO? má prática?

No curso de spring boot, o instrutor aborda que devolver a entidade JPA pelo rest seria uma má prática.

A motivação é que o jackson serializaria todo o conteúdo do objeto e se houver um outro objeto composto, ele também devolveria outro objeto todos os valores.

E para a camada rest, dependendo o contexto, não seria necessário enviar o objeto completo e suas respetivas composições.

Não sei exatamente quando o curso foi gravado, mas o jackson tem a possibilidade de você configurar se voce quer somente devolver aquilo que voce marca como @JsonProperty. Entre outras diversas configurações que dependendo do serviço rest, eu posso realizar uma serializacao/deserializacao customizada.

Pensando em um grande projeto, eu entendo que devolver a entidade JPA, customizada via jackson com apenas os atributos necessários, seria mais interessante na manutenção.

Se eu tiver que criar redundância de um DTO para CADA endpoint do meu sistema, eu acho que fica muito complicado.

Entendo que isso não seja uma má prática como diz no curso.

1 resposta

Boa noite, Rachel! Como vai?

Na realidade, não existe redundância entre a entidade e o DTO. Há uma regra em arquiteturas REST que diz que a infra da sua aplicação não deve influenciar/impactar a forma como o cliente recebe os dados. Portanto, a separação entre entidade e DTO permite que a entidade possa ser alterada livremente para atender mudanças da infra do BD, mudanças essas que não impactarão o DTO que representa a forma como o cliente recebe as informações.

Um exemplo prático disso é um campo que deixa de existir na entidade e que passa a ser apenas calculado pela própria aplicação antes de ser enviado para o cliente. Ora, se a entidade deixou de ter o tal campo como conseguirei enviar essa informação ao cliente? Alguém pode até argumentar que poderíamos ter essa informação dentro da entidade apenas para fins de envio dos dados. Mas aí nós estaríamos quebrando o princípio da responsabilidade única (SRP) que é um dos pilares do SOLID!

Há um bom livro na Casa do Código que trata sobre esse e outros assuntos relativos à criação de APIs REST. Segue o link:

https://www.casadocodigo.com.br/products/livro-rest

Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!