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).
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).
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:
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>
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);
}
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.