Data Mapper
Para entender mejor esto te sugiero que leas y entiendas por completo como funcionan las arquitecturas de programación:
- Arquitectura Hexagonal en JAVA Spring Boot
- Arquitectura Limpia explicado con patitos 🐤
- Arquitectura N-Capas GUÍA COMPLETA .NET Core
Data Mapper nos ayuda a convertir o traducir dos objetos que pueden hacer la misma labor.
¿Qué logramos con esto?
- No se expone la BD a la API
- No tener campos innecesariso en la API
- Descooplar nuestra API a una base de datos puntual
- No se mezcla idiomas en el dominio
- En el caso que se desee integrar una nueva base de datos con otros campos, pero que sea para el mismo proyecto, no es necesario cambiar todo el código, simplemente se crea otro traductor que sirva para traducir la nueva tabla al dominio
Para usarlo necesitaremos MapStruct El cual es un generador de código.:
Luego vas a documentación y si usas gradle serían estas 2 lineas para importarlo a tu proyecto spring:
runtimeOnly("org.postgresql:postgresql")
implementation ("org.mapstruct:mapstruct:1.6.3")
Ahora vamos a usar un plugin para autocompletar las estructuras
MapStruct Support Plugin for JetBrains IDEs | JetBrains Marketplace
MapStruct Support Plugin for JetBrains IDEs | JetBrains Marketplace
Ejemplo de como usarlo:
@Mapper(componentModel = "spring")
public interface CategoryMapper {
@Mappings({
@Mapping(source = "idCategoria", target="categoryId"),
@Mapping(source = "descripcion", target="category"),
@Mapping(source = "estado", target="active")
})
Category toCategory(Categoria categoria);
@InheritInverseConfiguration
@Mapping(target = "productos",ignore = true)
Categoria toCategoria(Category category);
}
Comentarios
Publicar un comentario