Hola mundo con las tecnologías de SpringMVC, Hibernate, un ejemplo de aspectos y test con JUnit

6
45882

Tutorial holamundo con Spring MVC, Hibernate y aspectos.

0. Índice de
contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Mac Book Pro 17″ (2,93 Ghz Intel Core 2 Duo, 8 GB DDR3)
  • Sistema Operativo: Mac OS X Mavericks 10.9
  • Spring Framework 3.0
  • IDE: Eclipse Kepler + plugin m2e

2. Introducción.

En este tutorial vamos a hacer un holamundo para probar las distintas tecnologías como son Spring MVC, maven para gestionar las dependencias fácilmente, Hibernate para persistencia, crearemos un aspecto a modo de holamundo para ver cómo funciona y por último crearemos un test de prueba con JUnit.

Para el ejemplo, vamos a crear una base de datos en la que vamos a tener unos libros y los vamos a mostrar por pantalla, y teniendo una opción para introducir nuevos libros.

3. Preparación del entorno en eclipse con Maven.

EL primer paso para empezar el tutorial, es crear un nuevo proyecto en eclipse. Voy a suponer que ya está instalado todo lo necesario como maven y el plugin de Spring.

En este tutorial podemos ver cómo crear el proyecto para SpringMVC.

El pom de nuestro proyecto maven va a ser el siguiente, para que se descargen las dependencias necesarias:

Y al final del tutorial el proyecto tiene que tener una estructura como la siguiente:

Y otra cosa a tener en cuenta es que la aplicación correrá bajo un tomcat, que se sale del tutorial explicar cómo instalarlo en eclipse, aunque no tiene ninguna complicación.

4. Configuración Spring MVC, Hibernate y Aspectos.

Para empezar nos creamos en la ruta: /webapp/WEB-INF/ un archivo xml que en mi caso le he llamado servlet-context.xml que será donde estén todas las beans y configuraciones de hibernate y aspectos. Al ser un pequeño ejemplo no se ha modularizado que es lo conveniente.

Voy a comentar en el mismo código las cosas más significativas:

Ahora vamos a explicar de la misma manera el fichero web.xml, que se encuentra en la misma ruta que el anterior y es en el que configuraremos los servlets.

Con esto tenemos la configuración mínima para funcionar, nos queda crear nuestras clases, el script de la base de datos, el aspecto y la vista que lo haremos en la siguiente sección.

5. Creando la lógica de la aplicación.

Vamos a empezar con las clases de persistencia, primeramente creamos el POJO Libro con las anotaciones de Hibernate.

Ahora vamos a definir el dao, que será muy sencillo, como toda la aplicación.

Ya que estamos con la parte de persistencia, ahora dejo el script de creación de la base de datos y algún dato de ejemplo.

No voy a explicar nada del script ya que es básico. Ahora seguimos con la parte de vista. Primero describiré el service, que será llamado por el controller de la vista y por último describiré la vista, para dejar para el final el aspecto.

En el servicio vamos a implementarlo con una interfaz, que es como se debe hacer todo, pero al ser un ejemplo sencillo solo contaremos con esta interfaz, en vuestras manos dejo implementar correctamente los demás métodos.

Y ahora la implementación del servicio, que implementará la interfaz que acabamos de crear.

El controlador será el siguiente:

Una vez explicado el controlador, vamos a hacer una vista muy simple para mostrar la información.

Y ya sólo nos queda definir el aspecto que será una clase java en la cual simplemente se llama a imprimir en la salida estandar cada vez que se ejecuta un método que se llama list().

Con esto hemos terminado de definir La lógica de nuestro programa. En resumen, tenemos una base de datos con varios libros, gestionada por hibernate. Spring MVC nos muestra la vista y controla las variables que aparecen en la vista y que la rellenan. Y tenemos un aspecto que se ejecuta cada vez que el método list() es llamado.

En la siguiente parte veremos cómo hacer un pequeño ejemplo de test, que no probaremos todo, sólo la base de datos como ejemplo.

6. Ejemplo test para el dao.

Ahora vamos a realizar tres simples test, en el primero comprobamos que en la base de datos existen 3 libros, los cuales introducimos con el script libros.sql. En el segundo probamos que se realiza el insert correctamente. Y en el último comprobamos que se borran libros correctamente.

Ahora vamos con el XML que hemos reducido para levantar únicamente lo que necesitamos para los test.

Como podemos ver hemos quitado la parte de MVC y aspectos ya que no se van a probar en los Test.

Sólo queda decir que para ejecutarlo, por ejemplo, se pulsa en el botón derecho sobre la clase y la ruta : RunAs –> JUnit Test, y vemos que los tres test pasan correctamente. En la siguiente imagen lo muestro.

7. Conclusiones.

El objetivo del tutorial es mostrar un pequeño ejemplo de todo el sistema mvc, con los spring e hibernate como base, y añadiendo aspectos y tests, para que sea un punto de partida para hacer cosas más interesantes.

Dejo el código del proyecto aquí para que lo podáis descargar.

Para cualquier duda o aclaración, en los comentarios.

Un saludo.

6 Comentarios

  1. Hola, antes que nada gracias por el post, ha sido el unico tutorial que me ha funcionado, solo tengo una duda, porque no se crea la base y las tablas con sus registros en mi base de mysql en mi maquina y si hay alguna forma de hacerlo que cambios habria que hacer

    Muchas gracias

  2. Buenas, haciendo el tutorial y he dado cuenta de una errata en el pom.xml y es que la dependencia:

    javax.servlet
    servlet-api
    {javax_servlet.version}
    provided

    Le falta $ en la versión, debería quedar así:

    javax.servlet
    servlet-api
    {javax_servlet.version}
    provided

    Me ha costado un poco darme cuenta que pasaba así que sí le ahorro algo de tiempo al siguiente guay 😀

    También decir que el proyecto que has puesto a descargar no es el mismo que explicas y no funciona, o al menos no he conseguido hacerlo funcionar, he tenido que ir copiando y pegando lo que estaba escrito en el tutorial. Aun así me ha aclarado muchas cosas, lo has explicado genial, muchas gracias.

    Un saludo.

  3. Excelente tu tutorial

    Muy bien explicado y me ha funcionado a la perfección al segundo intento, en el primero tuve un error en las dependencias pero ya quedo resuelto aparte explicas línea por línea lo que significa el código y me es muy útil para enterner.

    He cambiado un poco el tutorial para poder conectarme a una base de datos de Oracle para poder usar sus paquetes plsql.

    Saludos

  4. Esta bueno el titurial y lo adapte a MySQL, hice el delete y puede identificar el edit, siguiendo tu lógica no he podido hacer el update, favor si me puedes ayudar.
    DAO
    @Transactional
    public void updateBook(Libro libro) {
    Libro libroToUpdate = getLibro(libro.getId());
    libroToUpdate.setTitulo(libro.getTitulo());
    libroToUpdate.setAutor(libro.getAutor());
    libroToUpdate.setIsbn(libro.getIsbn());
    sessionFactory.getCurrentSession().update(libroToUpdate);
    }

    LibroServiceImp

    public void updateBook(Libro libro) {
    dao.updateBook(libro);
    }

    LibroService

    public void updateBook(Libro libro);

    Controller

    @RequestMapping(value=»/edit/{id}»)
    public String mostrarDetalle(Model model, @PathVariable Integer id, @ModelAttribute(«libro») Libro libro) {

    libroServiceImpl.updateBook(libro);

    libroServiceImpl.getLibro(id);

    List libros = libroServiceImpl.findAll();
    model.addAttribute(«libros», libros);

    return «editLibro»;
    }

    Como seria el editLibro?

    Gracias.

Dejar respuesta

Please enter your comment!
Please enter your name here