Skip to content

21. Conclusión

Recordemos lo que se ha expuesto en este documento:

  • los fundamentos de la programación web en Java con servlets y páginas JSP
  • una introducción a la arquitectura MVC
  • una introducción a la arquitectura de tres capas
  • una introducción a Spring IoC
  • ejemplos para ilustrar estos puntos

Creemos que el lector que haya llegado hasta aquí está preparado para desarrollar por sí mismo sus propias aplicaciones web en Java. También está preparado para abordar otros métodos de desarrollo similares a los estudiados en este documento. Recordemos la arquitectura de las aplicaciones web desarrolladas aquí:

Para aplicaciones sencillas, esta arquitectura es suficiente. Cuando se han escrito varias aplicaciones de este tipo, se observa que los servlets de dos aplicaciones diferentes:

  1. tienen el mismo mecanismo para determinar qué método [doAction] hay que ejecutar para procesar la acción solicitada por el usuario
  2. en realidad solo difieren en el contenido de dichos métodos [doAction]

Entonces, la tentación de:

  • factorizar el procesamiento (1) en un servlet genérico que ignore la aplicación que lo utiliza
  • delegar el procesamiento (2) a clases externas, ya que el servlet genérico no sabe en qué aplicación se utiliza
  • establecer la conexión entre la acción solicitada por el usuario y la clase que debe procesarla mediante un archivo de configuración

Han surgido herramientas, a menudo denominadas «frameworks», para proporcionar estas facilidades a los desarrolladores. El más antiguo y probablemente el más conocido de ellos es Struts (http://struts.apache.org/). Jakarta Struts es un proyecto de la Apache Software Foundation (www.apache.org). Este framework se describe en (http://tahe.developpez.com/java/struts/).

El marco Spring (http://www.springframework.org/), de aparición más reciente, ofrece funcionalidades similares a las de Struts. En realidad, se trata de su módulo Spring MVC. Su uso se ha descrito en varios artículos (http://tahe.developpez.com/java/springmvc-part1/).

Spring no se limita únicamente al concepto MVC de la capa [web] de una aplicación de tres capas. Resulta útil incluso en aplicaciones ajenas a la web.

Así pues, hemos concluido nuestro curso implementando una arquitectura MVC en una arquitectura de tres capas [web, metier, dao] a partir de un ejemplo básico de gestión de una lista de personas.

En la versión 1 de la aplicación, la lista de personas se mantenía en memoria y desaparecía al cerrar la aplicación web. En las demás versiones, la lista de personas se almacena en una tabla de la base de datos. Hemos utilizado cuatro SGBD diferentes: Firebird, Postgres, MySQL y SQL Server Express.

Gracias a Spring IoC, la capa [web] de la versión 1 se pudo conservar íntegramente en las versiones siguientes. De este modo, hemos demostrado que es posible construir arquitecturas ntier con capas independientes.

Con las versiones que utilizan una base de datos, hemos demostrado la contribución de Spring a la construcción de las capas [dao] y [service]. Gracias a la integración de Spring con iBATIS, hemos podido crear cuatro versiones que solo se diferencian en sus archivos de configuración. Se ha utilizado la misma clase [DaoImplCommon] para implementar la capa [dao] en las cuatro versiones. Para gestionar un problema específico de SGBD Firebird, nos vimos obligados a derivar esta clase, pero sin modificarla.

Por último, hemos mostrado cómo Spring nos permite gestionar las transacciones de forma declarativa en la capa [service].

Animamos al lector a descubrir todas las funcionalidades que ofrece este producto.