10 – Servicio de Estudiantes (lógica de negocio)
Descripción
Encapsular la lógica de negocio del CRUD de estudiantes en la capa de servicio con inyección por constructor y transacciones declarativas.
Owner sugerido: Dev C | Branch: feature/estudiantes-service | Depende de: #8 (closed), #9 (closed)
Tareas
-
Crear excepciones de dominio en exception/:EstudianteNotFoundException(404),CedulaDuplicadaException(409),EstudianteInactivoException(409). -
Crear interfaz EstudianteServiceenservice/con métodos:crear,obtenerPorId,listar(apellidoLike, soloActivos, Pageable),actualizar,bajaLogica. -
Crear EstudianteServiceImplenservice/impl/con@Servicee inyección por constructor (@RequiredArgsConstructor). -
Usar @Transactionalen escrituras y@Transactional(readOnly = true)en lecturas. -
Reglas: cédula única (→ CedulaDuplicadaException), ID inexistente (→EstudianteNotFoundException), baja sobre inactivo (→EstudianteInactivoException). -
(Opcional) Tests con Mockito de los flujos principales.
Commits sugeridos
feat(estudiantes): agregar excepciones de dominio (not found, cedula duplicada)
feat(estudiantes): implementar EstudianteService con CRUD y baja lógica
refactor(estudiantes): usar inyección por constructor en el servicio
Criterios de aceptación
-
Servicio cubre los 5 métodos del CRUD. -
Excepciones de dominio correctas en cada caso. -
Inyección por constructor (sin @Autowireden campos). -
@TransactionalyreadOnly = truedonde corresponde.
Referencia del curso: Módulo 2 – PDFs 5, 8 (Inyección de Dependencias y Beans, Servicios y Capa de Negocio)