2
respostas

Automapper

Olá, existe algum pacote de terceiros que faça o automapper ? Penso em objetos com muitos atributos, talvez seja meio verboso escrever cada relação (mesmo com ajuda da IDE).

2 respostas

Olá, Wagner.

Tudo bem?

Sim, existem pacotes de terceiros que podem ajudar com o mapeamento automático de objetos em Java, o que pode ser muito útil para evitar ficar escrevendo muito, quando usar esses objetos com muitos atributos. Um dos mais populares é o MapStruct.

O MapStruct é uma biblioteca que gera automaticamente mapeamentos de objetos em tempo de compilação, o que o torna muito eficiente. Aqui está um exemplo básico de como você pode usá-lo:

  1. Adicione a dependência do MapStruct ao seu projeto. Se você estiver usando Maven, adicione o seguinte ao seu pom.xml:
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>1.4.2.Final</version>
</dependency>
<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>1.4.2.Final</version>
    <scope>provided</scope>
</dependency>
  1. Crie uma interface para o seu mapper. Por exemplo, para mapear entre Usuario e UsuarioEntity, você pode fazer algo assim:
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface UsuarioMapper {
    UsuarioMapper INSTANCE = Mappers.getMapper(UsuarioMapper.class);

    UsuarioEntity toEntity(Usuario usuario);
    Usuario toDomain(UsuarioEntity entity);
}
  1. Use o mapper no seu código:
public class RepositorioDeUsuarioJpa implements RepositorioDeUsuario {
    private final UsuarioRepository repositorio;
    private final UsuarioMapper mapper = UsuarioMapper.INSTANCE;

    public RepositorioDeUsuarioJpa(UsuarioRepository repositorio) {
        this.repositorio = repositorio;
    }

    @Override
    public Usuario cadastrarUsuario(Usuario usuario) {
        UsuarioEntity entity = mapper.toEntity(usuario);
        repositorio.save(entity);
        return mapper.toDomain(entity);
    }
}

Com o MapStruct, você não precisa escrever manualmente os métodos de mapeamento, o que pode economizar muito tempo e reduzir a possibilidade de erros.

Esse exemplo é só uma amostra básica da configuração, o ideal é você ler mais sobre esse pacote, e adaptá-lo com o seu projeto.

Espero ter ajudado e bons estudos!

Muito obrigado, Renan.