API REST con Spring Boot | 8 | Reutilización de código (@MappedSuperclass y código genérico)
Introducción a la Anotación de Superclase
Resumen de la Sección: En esta sección, se introduce el concepto de anotación de superclase y su utilidad en la programación orientada a objetos.
Creación de Clase Base
- La anotación de superclase permite crear clases base para que las entidades hereden propiedades comunes.
- Los atributos heredados son invisibles y se copian directamente a las tablas de las entidades que heredan, evitando la repetición.
Implementación de Clase Base
- Crear una clase base llamada "Base" dentro del paquete "Entidades".
- Agregar anotaciones como "@MappedSuperclass" para mapear la superclase y evitar repeticiones.
Extensión a Entidades Específicas
- Extender la entidad "Persona" de la clase base "Base", simplificando así el desarrollo al compartir atributos comunes.
- Crear una nueva entidad "Autor" que extienda de la clase base, definiendo sus atributos específicos como nombre, apellido y biografía.
Implementación Genérica para Persistencia
Resumen de la Sección: Se aborda cómo utilizar código genérico para reutilizar métodos en diferentes entidades y simplificar operaciones básicas.
Necesidad de Código Genérico
- Para cada entidad como "Autor", se requiere implementar servicios, repositorios y controladores específicos.
Métodos y Clases Genéricas
Resumen de la Sección: En esta sección, se explora el uso de métodos y clases genéricas en programación orientada a objetos, destacando cómo permiten la reutilización del código para diferentes tipos de datos.
Uso de Métodos y Clases Genéricas
- Las clases genéricas limitan los tipos de datos que pueden recibir, como en el ejemplo donde una clase "caja" solo puede recibir tipos que extiendan de la clase "number".
- Al instanciar una clase genérica, los datos enviados determinan el tipo que adquiere la instancia. Por ejemplo, enviar un dato string resultará en un tipo string para esa instancia.
- La flexibilidad de los métodos genéricos permite enviar cualquier tipo de dato necesario, siempre y cuando cumpla con las restricciones definidas previamente.
- Los códigos genéricos solo admiten tipos de referencia, no tipos primitivos. Esto implica utilizar referencias como "inter" en lugar de tipos primitivos como "int".
Ventajas y Consideraciones
- El uso de códigos genéricos facilita la reutilización del código con diferentes tipos de datos, mejorando su calidad, legibilidad y limpieza.
- Proporciona seguridad tipada al evitar castings innecesarios durante la ejecución del programa.
- Permite restringir los tipos aceptados por una clase o método genérico mediante límites predefinidos.
- Es esencial recordar que los códigos genéricos solo admiten tipos de referencia, evitando así errores al intentar utilizar tipos primitivos.
Implementación Práctica
Resumen de la Sección: En esta parte se detalla cómo implementar códigos genéricos en repositorios, servicios y controladores para mejorar la eficiencia y reutilización del código.
Implementación en Repositorios, Servicios y Controladores
- Para hacer un código más genérico, se deben identificar módulos repetitivos que podrían beneficiarse del enfoque genérico.
- En repositorios, se emplea herencia de interfaces para implementar códigos genéricos. Para servicios, se utilizan interfaces y sus implementaciones extendidas. Los controladores siguen un proceso similar con interfaz e implementación.