El objetivo de esta entrada es mostrar un ejemplo básico de CRUD
(Create, Read, Update y Delete) sobre Spring MVC (Model View Controller) y PostgreSQL. Lo realicé cursando Bases de datos en UNIVALI.
¿Programar para la asginatura bases de datos? Sí, una de las cosas que
me gustó de la mecánica de las clases de allí fué que al finalizar
cualquier asignatura, el alumno tenía que programar una aplicación,
obviamente enfocada en los contendios impartidos en dicha materia.
Además, el alumno podía elegir el lenguaje de programación para
desarrollar el trabajo, lo cual generaba ambientes de trabajo
interesantes.
Se ha usado más de una tabla para poder realizar pruebas con claves ajenas.
Para desarrollar la aplicación, desde Eclipse o cualquier otro IDE, creamos un nuevo proyecto web dinámico y después lo convertimos a proyecto MAVEN, aquí puedes ver el fichero pom.xml.
Las tablas están representadas mediante las clases Universidade y Aluno almacenadas en el paquete com.sprhib.model:
En el fichero WebAppConfig encontramos referencias importantes como @EnableWebMvc, que importa la configuración de Spring MVC desde WebMvcConfigurationSupportlo, y @EnableTransactionManagement, que habilita la capacidad de Spring de gestión de transacciones dirigidas por anotaciones:
En dicho fichero se almacenan los parámetros necesarios para la configuración de hibernate y la base de datos. La configuración habla por sí sola. La línea 11, hibernate.id.new_generator_mappings=false, permite que las claves AUTO_INCREMENT se generaran directamente en postgreSQL mediante spring.
Continuamos con las clases DAO (Data Access Object) y las capas de servicio:
Objetivo de mi trabajo:
Crear una aplicación web básica basada en Spring MVC, Hibernate y Maven. La aplicación implementará todas las operaciones CRUD utilizando PostgreSQL como base de datos. El contexto de la aplicación es gestionar alumnos de intercambio, por lo tanto permitirá añadir, leer, actualizar y eliminar alumnos y universidades.Base de datos
La aplicación trabajará sobre una instancia de postgreSQL. Mediante el siguiente script creamos las tablas necesarias:Se ha usado más de una tabla para poder realizar pruebas con claves ajenas.
Spring MVC
Para desarrollar la aplicación, desde Eclipse o cualquier otro IDE, creamos un nuevo proyecto web dinámico y después lo convertimos a proyecto MAVEN, aquí puedes ver el fichero pom.xml.
Las tablas están representadas mediante las clases Universidade y Aluno almacenadas en el paquete com.sprhib.model:
En el fichero WebAppConfig encontramos referencias importantes como @EnableWebMvc, que importa la configuración de Spring MVC desde WebMvcConfigurationSupportlo, y @EnableTransactionManagement, que habilita la capacidad de Spring de gestión de transacciones dirigidas por anotaciones:
Al
principio del fichero anterior encontrábamos la anotación
@PropertySource, que hace referencia al fichero application.properties:
En dicho fichero se almacenan los parámetros necesarios para la configuración de hibernate y la base de datos. La configuración habla por sí sola. La línea 11, hibernate.id.new_generator_mappings=false, permite que las claves AUTO_INCREMENT se generaran directamente en postgreSQL mediante spring.
Continuamos con las clases DAO (Data Access Object) y las capas de servicio:
Y para finalizar, generamos los controladores y los ficheros .jsp.
Como la aplicación ejecutará todas las operaciones CRUD, el controlador
será un poco extenso. Empecemos con el controlador base, que es el
responsable de la página de inicio:
Y aquí su jsp correspondiente:
Ahora vamos a uno de los controladores con más peso, el controlador UniversidadeController:
Ahora es momento de revisar todos los .jsp mapeados o asignados en este controlador.
Página para añadir añadir universidad:
Página para listar universidades:
Página para editar universidad:
Y finalmente, podemos desplegar la aplicación para realizar nuestras pruebas, tendrá el siguiente aspecto:
Todo el código empleado en este ejemplo está disponible en https://github.com/dsubires/Sring-MVC-Hibernate-Maven-PostgreSQL-CRUD-basico.
Comentarios
Publicar un comentario