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

MapStruct uma pequena ferramenta que pode te aj...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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

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;