API REST con Spring Boot | 9 | Repositorios y Servicios Genéricos
Implementación de Generix en Proyecto
Resumen de la Sección: En esta sección, se aborda la implementación de generix en un proyecto a través de la creación de repositorios genéricos y la adaptación de servicios para hacer uso de estos repositorios.
Creación de Repositorios Genéricos
- Se inicia creando un nuevo repositorio genérico mediante una nueva interfaz llamada
BaseRepository.
- Se utiliza la anotación
@NoRepositoryBeanpara evitar que se puedan crear instancias del repositorio base.
- El
BaseRepositoryrecibe dos tipos: el tipo entidad (que extiende deBase) y el tipo ID (que extiende deSerializable).
- La interfaz extiende tanto
JpaRepositorycomoJpaSpecificationExecutor.
Modificación del Personal Repository
- Se modifica el personal repository para que ahora extienda de
BaseRepository.
- Se elimina la importación anterior y se ajusta la extensión del personal repository.
Implementación del Repositorio Autor
- Se crea el repositorio para autor, extendiendo también de
BaseRepository, pero con el tipo autor.
Mejora en los Servicios Base
- Los servicios base ahora deben extender también de una clase base y recibir el tipo entidad y el tipo ID.
- Para hacerlos más genéricos, se incluye que el tipo ID debe ser serializable.
Implementación Genérica del Servicio
- Debido a cambios en los métodos, se plantea una implementación abstracta genérica del servicio.
- Esta implementación abstracta permitirá heredar métodos sin necesidad de implementarlos nuevamente en cada servicio específico.
Adaptaciones Finales en los Servicios
- Se instancia un repositorio base dentro del servicio e implementa los métodos necesarios.
Desarrollo de Servicios en Java - Parte 2
Resumen de la Sección: En esta sección, se aborda el desarrollo de servicios en Java, centrándose en la creación de clases y métodos específicos para diferentes modelos.
Creación de Clases y Métodos Específicos
- Se crea una nueva clase llamada "AutorService" dentro del paquete.
- La clase recibe la anotación
@Servicepara indicar que es un servicio y extiende deBaseServiceImplementationcon los tipos autor.
- Se procede a crear el constructor solicitado y realizar una instancia con
Autowired.
- La estructura genérica de los servicios incluye una interfaz genérica, una implementación abstracta y servicios específicos para cada modelo.
- Los métodos comunes a todo el modelo se encuentran en la interfaz, permitiendo reutilizar las clases en distintos proyectos.
Implementación Específica por Modelo
- Se crea una interfaz para "PersonasService" donde se declaran los métodos específicos para este servicio.
- La clase se renombra a "ImplementacionPersonasServices" para reflejar su implementación con claridad.
Ampliando a Otros Modelos
- Se crea la interfaz "AutorService" que extiende de
BaseServicecon los tipos autor.
- Esta interfaz será utilizada posteriormente al crear queries en la aplicación.
Finalización del Módulo de Servicios
Resumen de la Sección: En esta parte, se concluye con la implementación de interfaces para los servicios relacionados con autores y personas.
Implementación Final
- Se finaliza la implementación de las interfaces "AutorService" y "PersonasService".