Springboot y Mysql
Springboot y Mysql
Edwin Peñuela
Ingeniería de Sistemas, Uniminuto
60 – 66167: Arquitectura de Software
Alexander Matallana
23 de octubre, 2024
Resumen
El sistema desarrollado consta de varias tablas que modelan las entidades: profesor, grupo y estudiante. A
través de Spring Boot y sus capacidades de manejo de datos con JPA, se configuraron controladores y
servicios que permiten gestionar esta información de manera dinámica. Los usuarios pueden agregar,
modificar, y eliminar registros, así como asignar estudiantes a grupos y profesores a grupos.
Abstract
The developed system consists of several tables that model the entities: teacher, group and student. Through
Spring Boot and its data management capabilities with JPA, controllers and services were configured that
allow this information to be managed dynamically. Users can add, modify, and delete records, as well as
assign students to groups and teachers to groups.
Introducción
En este ejercicio, se desarrolló una base de datos para gestionar información de estudiantes, profesores y
grupos, utilizando MySQL como sistema de gestión de bases de datos y Spring Boot para implementar la capa
de servicio en Java. La aplicación web permite realizar operaciones CRUD (crear, leer, actualizar y eliminar)
sobre estas entidades.
Objetivos
• Crear una base de datos estructurada que represente la relación entre profesores, grupos, y
estudiantes de forma eficiente y escalable.
• Implementar la lógica de la aplicación usando Spring Boot, proporcionando servicios para gestionar
la información y las relaciones en la base de datos.
• Desarrollar una interfaz web que permita interactuar con la base de datos y visualizar la información
de manera clara y organizada, utilizando Thymeleaf para la renderización de las páginas HTML.
El funcionamiento de esta aplicación web consta de una base de datos llamada colegio, la cual esta
estructurada por 4 tablas creadas en MySql, la cual se conecta a un contenedor de Docker con la conexión del
puerto 3310. Esta base de datos se estructura de la siguiente manera:
En la imagen se puede apreciar varias relaciones, las cuales de
definen en: Profesor y grupo, donde existe una relación uno a
uno, donde un profesor puede estar asignado a a un solo grupo,
un grupo solo puede tener un profesor a cargo.
Grupo y estudiante, donde hay una relación de muchos a
muchos, en la cual un estudiante puede pertenecer a varios
grupos y un grupo puede tener varios estudiantes. Para esta
relación se puede apreciar la presencia de una tabla adicional, la
cual se llama Lista_Estudiantes, la cual se crea mediante la definición de la relación n-n, establecida en
MySql workbench.
Por último, existe la relación de Profesor y estudiante, donde hay una relación de uno a muchos. Para este
caso un profesor puede dirigir varios estudiantes, mientras que un estudiante puede tener un solo profesor.
Ahora Por la parte de Springboot se descargó un proyecto en Spring Initializr con las siguientes dependencias:
• Spring Boot Starter JPA, para dar soporte con Spring Data
• Thymeleaf que permite dar sporte a plantillas html
• Spring Web para la creación de aplicaciones web
• Srping Boot DevTools que facilitan el desarrollo de la aplicación a través de herramientas
• MySQL Connerctor que ayuda a establecer una conexión con las bases de MySql
• Lombok Implementa funciones que simplifican la escritura y extensión de código.
• Starter Test que proporciona dependencias para pruebas unitarias e integración en Spring Boot.
Todas estas dependencias se pueden encontrar en el archivo pom.xml.
Ahora Pasando al proyecto en sí, se crearon distintos paquetes de una forma ordenada, con el fin de almacenar
ciertos archivos, donde cada uno de estos puede cumplir una funcionalidad individual para evitar errores o
posibles fallos de ejecución.
Para empezar, esta el paquete llamado “Controller”, el cual contiene archivos “EstudianteController”,
“ProfesorController” y “GrupoController”. Cada uno de estos archivos contiene la inyección de interfaces, de
las cuales ya hablaremos, con el fin de que, al momento de utilizar los métodos de asignación, eliminación,
guardado o edicion de las entidades anteriormente mencionadas, estos identifiquen que entidad asignar a otra
entidad, por ejemplo, la asignación de varios estudiantes a un solo profesor.
Por otro lado, se tiene el mapeo de direccionamiento, lo cual hará que los archivos .html identifiquen estos
métodos y con su diseño, al momento de oprimir estos, redireccione al usuario a las distintas paginas a
realizar las respectivas acciones o funciones que tiene destinado tanto cada controlador como cada página
.html.
El paquete llamado “InterfaceService”, el cual contiene las clases como interfaces “IEstudianteService”,
“IGrupoService” y “IProfesorService”, que son clases que se inyectan a los controladores, como
anteriormente se dijo, con el fin de que, si se desea realizar algún cambio, se realiza directamente desde el
service. Estos archivos contienen las funcionalidades de cada clase, y cada una de estas interfaces tiene sus
propios métodos que pueden ser inyectados dentro de los controladores con el fin de hacer uso de estos, por
ejemplo, la inyección de “IEstudianteService”, “IGrupoService” y “IProfesorService” en la clase de
estudianteController, esto con el fin de asignar un estudiante a un profesor y grupo, con los métodos que están
dentro de ese controlador.
Los archivos en el paquete "Model", los cuales son “Estudiante”, “Grupo” y “Profesor”, sirven para definir las
entidades principales del sistema y establecer las relaciones entre ellas en el contexto de una base de datos.
Estas clases permiten que los datos sobre estudiantes, profesores y grupos se estructuren de manera
organizada y coherente, asegurando que las interacciones y asignaciones (como un estudiante perteneciendo a
un grupo o un profesor asignado a un grupo específico) se manejen automáticamente a través de las
asociaciones que se definen en estas entidades. En resumen, estos archivos proporcionan el esquema y la
lógica de conexión entre los datos de la aplicación, facilitando su gestión y manipulación en la base de datos.
Los archivos en el paquete "Repository" son interfaces que extienden de JpaRepository y se encargan de
interactuar directamente con la base de datos. Estos repositorios permiten acceder y manipular las entidades
de "Estudiante", "Grupo" y "Profesor" de manera fácil y eficiente, aprovechando las capacidades de JPA para
realizar operaciones como guardar, actualizar, eliminar o buscar registros sin necesidad de escribir
manualmente las consultas SQL. En general, estos archivos proporcionan la infraestructura necesaria para
manejar los datos en la aplicación, facilitando las tareas de persistencia y recuperación de información de las
entidades.
Por último, están los archivos en el paquete "Service" implementan las interfaces de servicio correspondientes
para cada entidad: Estudiante, Profesor y Grupo. Estos servicios encapsulan la lógica de negocio de la
aplicación y gestionan las operaciones CRUD (crear, leer, actualizar, eliminar) para las entidades utilizando
los repositorios. Además, estos servicios permiten manejar de manera centralizada la asignación y gestión de
relaciones entre entidades, como asignar estudiantes a un profesor o grupo. En resumen, los servicios
proporcionan un nivel intermedio entre los controladores y los repositorios, asegurando que las operaciones
sobre las entidades se realicen de manera controlada y coherente dentro de la aplicación.
Ahora bien, el funcionamiento de la aplicación se resume de esta manera.
Primero tenemos un menú principal:
Si oprimimos el botón de “Lista de estudiantes” se redireccionara a una pagina que contiene un listado vacio.
Si queremos agregar un nuevo estudiante, solo debemos oprimir el botón de “Nuevo Estudiante”, el cual nos
llevara a un formulario para diligenciar los datos necesarios.
Si queremos editar un registro nos llevara a la misma pagina de nuevo, reutilizando la misma interfaz.
Ahora para la interfaz de lista de profesores y grupos es lo mismo, igual para agregar y editar. Ahora
agregaremos nuevos profesores:
Por último, agregaremos grupos:
Ahora bien, vamos a asignar tanto los estudiantes como profesores a los grupos, para ello iremos al menú
principal y presionaremos el botón de “Asignar estudiantes a Profesores y grupos”, y nos llevara a esta
interfaz:
Aquí aparecerán los registros que previamente añadimos. Si oprimimos por encima del nombre del profesor o
del grupo aparecerá un menú desplegable:
Conclusiones
El desarrollo de este sistema permite una administración eficaz y escalable de la información de una
institución educativa, facilitando la gestión de datos relacionados con profesores, estudiantes y grupos. La
implementación de relaciones en la base de datos y el uso de JPA asegura la consistencia y la integridad de los
datos. Con una arquitectura bien estructurada y aprovechando las herramientas de Spring Boot y Thymeleaf,
se ha creado una aplicación web robusta que cumple con las necesidades básicas de gestión educativa,
sentando las bases para futuras expansiones o mejoras en el sistema.