Para cumplir con la Arquitectura Hexagonal y la Ley del Arquitecto, los DTOs y las Entities NUNCA deben mezclarse fuera de la capa de Component o Service.
BeanUtils.copyProperties (falta de tipado) o ModelMapper (performance inferior en tiempo de ejecución).@Data, @Builder, @NoArgsConstructor y @AllArgsConstructor para eliminar código boilerplate.@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ThirdPartyMapper {
// MAPPING: Entity -> DTO
ThirdPartyDto toDto(ThirdParty entity);
// MAPPING: DTO -> Entity
@Mapping(target = "id", ignore = true) // El ID lo genera la DB
@Mapping(target = "tenantId", source = "currentTenantId") // Inyección manual
ThirdParty toEntity(ThirdPartyDto dto, String currentTenantId);
}
@NotNull, @Size, @Email) deben residir en el DTO (definido en CentricaModel).String a LocalDate).Component.Entregable Arquitectura - Tarea 1.3.4
Versión 1.0 - Proyecto Nebula ERP