implementar o padrão DTO Agenda O framework MapStruct Códigos que podemos gerar com o MapStruct Outras libs e formas de gerar os seus DTOs + comparações
Transferência de Dados (ou simplesmente DTO) é um padrão de arquitetura de objetos que agregam e encapsulam dados para transferência; • O DTO tem como objetivo, separar o Model da View(desacoplamento); • [Objetivo de quando o padrão surgiu] Definir implicitamente uma fase de montagem, na qual todos os dados que serão usados para apresentação passam por uma ordenação antes de irem efetivamente para a camada de apresentação; • O DTO nasceu no mundo Java no EJB2; ◦ Contornar o problema de serialização do Enterprise Java Bean (EJB); https://www.infoq.com/br/articles/dto-hipster-ou-depreciado/
informação para o cliente; • O DTO é bastante utilizado quando não queremos expor todos os dados da nossa camada de persistência mas precisamos exibir ao nosso cliente estes mesmos dados; • Diferente do que ocorre com os objetos de negócio e os objetos de acesso a dados (DAO), o DTO não possui qualquer tipo de comportamento; https://www.infoq.com/br/articles/dto-hipster-ou-depreciado/
Versionamento e retrocompatibilidade são pontos importantes Facilita a atualização do banco de dados (desacoplamento) Facilita o desenho em relação a orientação de objeto (esconde os dados para expor o comportamento) Padrão popular Vantagens e desvantagens dos DTOs Facilidade de trabalhar com o model rico e na criação de uma API que é a prova de balas Aumento a complexidade; Existe grande possibilidade do código ficar duplicado. https://www.infoq.com/br/articles/dto-hipster-ou-depreciado/
DTO's em java; -> A longo prazo, esse processo se torna trabalhoso e suscetível a erros, pois a montanha de código tende aumentar; -> Sem um padrão de mapeamento, o código se torna cada vez mais difícil de ser entendido, incrementado e testado. https://medium.com/mobicareofficial/mapstruct-simplificando-mapeamento-de-dtos-em-java-c29135835c68
código que simplifica bastante a implementação de mapeamentos entre tipos de bean Java; • Implementações são derivadas de assinaturas de método em interfaces ou classe abstratas e de convenções na leitura e escrita em variáveis; • O código de mapeamento gerado usa invocações simples de método e, portanto, é rápido, seguro e fácil de entender; • MapStruct é compatível com projetos gerenciados pelo Maven, Gradle e Apache Ant; • O MapStruct também tem a capacidade de converter entre diferentes tipos de dados; • Em contraste com outras estruturas de mapeamento, o MapStruct gera mapeamentos de bean em tempo de compilação, o que garante um alto desempenho, permite feedback rápido do desenvolvedor e verificação completa de erros.
1.Anotar uma interface ou classe abstrata com @Mapper. 2. Injetar o mapeador como qualquer outro componente do Spring Boot. 3. Chamar a função de conversão que foi anotada na interface criada Código gerado
primitivos numéricos, seus wrappers, BigDecimal, BigInteger e String são convertidos implicitamente entre si; • A programadora deve garantir que o valor cabe na variável alvo, como no caso de um long ser convertido para um byte.