Interface EntityDtoMapper<T,D,C,U>
- Type Parameters:
T
- Tipo de entidad de dominio (ej: User, Product, Order)D
- Tipo de DTO de respuesta (ej: UserResponseDto, ProductDto)C
- Tipo de DTO de creación (ej: UserCreateDto, CreateProductRequest)U
- Tipo de DTO de actualización (ej: UserUpdateDto, UpdateProductRequest)
public interface EntityDtoMapper<T,D,C,U>
Interfaz para mapeo entre entidades y DTOs en operaciones de paginación y CRUD.
Esta interfaz define los métodos necesarios para convertir entre diferentes representaciones de datos: entidades de dominio, DTOs de respuesta, DTOs de creación y DTOs de actualización.
Ejemplo de Uso:
@Component
public class UserMapper implements EntityDtoMapper<User, UserResponseDto, UserCreateDto, UserUpdateDto> {
@Override
public UserResponseDto toResponse(User entity) {
return UserResponseDto.builder()
.id(entity.getId())
.name(entity.getName())
.email(entity.getEmail())
.createdAt(entity.getCreatedAt())
.build();
}
@Override
public User toEntity(UserCreateDto createDto) {
return User.builder()
.name(createDto.getName())
.email(createDto.getEmail())
.build();
}
@Override
public User toUpdateEntity(UserUpdateDto updateDto) {
return User.builder()
.name(updateDto.getName())
.email(updateDto.getEmail())
.build();
}
}
- Since:
- 1.0
-
Method Summary
Modifier and TypeMethodDescriptionConvierte un DTO de creación a una entidad de dominio.toResponse
(T entity) Convierte una entidad de dominio a un DTO de respuesta.toUpdateEntity
(U updateDto) Convierte un DTO de actualización a una entidad de dominio para operaciones de actualización.
-
Method Details
-
toResponse
Convierte una entidad de dominio a un DTO de respuesta.Este método se utiliza principalmente para transformar entidades recuperadas de la base de datos a DTOs que serán enviados como respuesta en las APIs REST.
- Parameters:
entity
- La entidad de dominio a convertir. No debe sernull
.- Returns:
- El DTO de respuesta correspondiente
- Throws:
IllegalArgumentException
- si la entidad esnull
Ejemplo de uso:
User user = userRepository.findById("123"); UserResponseDto responseDto = mapper.toResponse(user);
-
toEntity
Convierte un DTO de creación a una entidad de dominio.Este método se utiliza cuando se recibe una petición de creación desde el cliente y necesitamos convertir los datos a una entidad para persistir en la base de datos.
- Parameters:
createDto
- El DTO de creación con los datos del nuevo registro. No debe sernull
.- Returns:
- La entidad de dominio lista para ser persistida
- Throws:
IllegalArgumentException
- si el DTO esnull
Ejemplo de uso:
UserCreateDto createDto = new UserCreateDto("John Doe", "john@example.com"); User user = mapper.toEntity(createDto); userRepository.save(user);
-
toUpdateEntity
Convierte un DTO de actualización a una entidad de dominio para operaciones de actualización.Este método se utiliza cuando se recibe una petición de actualización. TÃpicamente, se combina con la entidad existente para realizar actualizaciones parciales.
- Parameters:
updateDto
- El DTO de actualización con los campos a modificar. No debe sernull
.- Returns:
- La entidad de dominio con los cambios aplicados
- Throws:
IllegalArgumentException
- si el DTO esnull
Ejemplo de uso:
UserUpdateDto updateDto = new UserUpdateDto("John Smith", null); // Solo actualizar nombre User existingUser = userRepository.findById("123"); User updatedEntity = mapper.toUpdateEntity(updateDto); // Aplicar cambios solo a campos no nulos if (updatedEntity.getName() != null) { existingUser.setName(updatedEntity.getName()); } userRepository.save(existingUser);
-