Ejemplo JavaEE. Tienda Online

por Abr 5, 20200 Comentarios

Este es un proyecto que llevé a cabo en la universidad y que he publicaco con intención didáctica. Es un ejemplo de una aplicación cercana a la realidad en JavaEE, una tienda online.

El proyecto comenzó siendo una asignatura de la universidad, pero conforme fue avanzando me fui involucrando más en ello y fue adquiriendo unas dimensiones que fácilmente acercarían a la aplicación a algo cada vez más orientado a algo real. Al acabar el curso el profesor de la asignatura, Abraham Otero Quintana me propuso perfeccionar el proyecto con la intención de que fuera útil a mucha más gente, conseguir un ejemplo algo más avanzado de lo que se suele encontrar en los manuales.

Funcionalidad de la tienda online en JavaEE

El proyecto consiste en una aplicación web Java EE que cumple con las funciones de una tienda online.

  • Los usuarios pueden adquirir productos y realizar el pago (sin pasarela de pago).
  • Compras con registro o sin registro para evitar tener que hacerse una cuenta.
  • Dejar comentarios sobre los productos.
  • Zona de administración solo para los usuarios con derechos de administración.
    • Gestión de productos a la venta.
    • Gestión de usuarios registrados
    • Consultar historial y estadísticas gráficas de ventas.
    • Gestión de comentarios de los productos.

Las características están más detalladas en la documentación.

Detalles del desarrollo en JavaEE

La aplicación basa su persistencia en el patrón DAO, por lo que es posible implementar varios métodos de persistencia. Por defecto se ha implementado la persistencia contra bases de datos (MySQL) y persistencia contra ficheros serializados en disco.

Durante el desarrollo de la aplicación se ha prestado especial atención a varios aspectos: la seguridad, la concurrencia y finalmente un especial cuidado en la detección de fallos y errores en el funcionamiento del sistema.

En el aspecto de la seguridad nos encontraremos con que toda información enviada por el usuario es validada mediante una librería de seguridad (ESAPI). Por otra parte, todo el sistema de URLs está preparado para que solo sea posible acceder a las páginas de la manera que se espera y no de otra manera. Encontraremos más información sobre las medidas tomadas en la documentación del proyecto.

En lo referente a la concurrencia se han hecho las clases encargadas de la persistencia siguiendo el patrón de diseño Singleton para que no sea posible tener más de una instancia de esa clase. Para la persistencia contra ficheros se han tomado las medidas necesarias para asegurar que los archivos no sean corrompidos realizando escrituras simultáneas.

En la persistencia contra bases de datos se ha usado un nivel de aislamiento adecuado para evitar la lectura de datos confirmados (READ COMMITED). Es de especial interés en lo que a concurrencia se refiere la manera en la que se hace la compra de un carrito y se disminuyen las unidades en el almacén.

Vídeo y documentación de la tienda online en JavaEE

He decidido publicar el código fuente completo en un repositorio de google code GitHub, también dejo las sentencias SQL necesarias para crear la base de datos. He realizado también un escrito como documentación en el que se puede observar el funcionamiento más en detalle de la aplicación. Por último he realizado un videotutorial en el que se explica desde cero como montar la aplicación y todo lo necesario para que esta funcione.

A continuación he dejado disponible toda la documentación necesaria para poder ver el proyecto en detalle.

Descarga del Proyecto desde GitHub

El proyecto inicialmente se dejó disponible en un repositorio de Google Code. Con el cierre de Google Code se ha migrado el proyecto a GitHub. Aunque el tutorial en vídeo que se ha publicado esté hecho para Google Code se puede usar igualmente para obtener el proyecto desde GitHub.

La principal diferencia es que la URL del repositorio es distinta y que el proyecto ya no está dentro de una subcarpeta trunk sino que está en la raíz del repositorio. A continuación se indica la nueva URL del repositorio del proyecto.

https://github.com/JuanDYB/tiendaonlinelpijdyb

Directorio de Checkout: /OnlineShop

Espero que os haya gustado y os haya ayudado este ejemplo de programación con Java EE. La publicación es totalmente desinteresada y con fines didácticos. Si alguien estuviese interesado en utilizarlo para algún otro fin o seguir trabajando en ello me gustaría que me lo comunicase y se podrían publicar las mejoras.

Estoy abierto a cualquier duda al respecto ya sea con un comentario, contactando conmigo mediante el formulario de contacto.

Actualización: El artículo ha sido publicado en JavaHispano por Abraham Otero. Creo que es interesante ver los comentarios que se han publicado allí, entre otras cosas por anotaciones interesantes que se han hecho y que se hagan.