Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MapStruct uma pequena ferramenta que pode te aj...

MapStruct uma pequena ferramenta que pode te ajudar muito

Essa palestra eu apresentei no evento do TDC Business São Paulos e também apresentei na live no canal SouJava (https://www.youtube.com/watch?v=-cVSTujtzP4).

Avatar for Claudia Rejane

Claudia Rejane

September 27, 2022
Tweet

Other Decks in Programming

Transcript

  1. O Padrão DTO Vantagens e desvantagens do padrão DTO Como

    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
  2. O Padrão Data Transfer Object (DTO) • Padrão Objeto de

    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/
  3. O Padrão Data Transfer Object (DTO) • Evita sobrecarga de

    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/
  4. Deixa explícito quais campos irão para a camada da view/client

    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/
  5. -> É bastante simples fazer o mapeamento de variáveis entre

    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
  6. Sobre o MapStruct • O MapStruct é um gerador de

    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.
  7. Códigos que podemos gerar com o MapStruct + Spring Boot

    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
  8. MapStruct: Mapeando beans de tipos numéricos e strings • Tipos

    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.
  9. Outras libs e formas de gerar os seus DTOs ->

    ModelMapper (http://modelmapper.org/); -> Orika (https://orika-mapper.github.io/orika-docs/); -> Dozer (http://dozer.sourceforge.net/); -> JMapper (https://jmapper-framework.github.io/jmapper-core/); -> A classe BeanUtils;