Aplicacion Con Acceso a Bases de Datos Java MySql y Patrones de Diseño Parte 4

Ahora continuando con el proyecto se crearan las clases correspondientes al patron facade y delegate, iniaremos con la clase ArticuloFacade del paquete facade. Para mas información ir a Session Facade .

Creación de la clase ArticuloFacade

1. Seleccionar el paquete com.ezjamvc.modelo.facade
2. Clic secundario
3. Nuevo
4. Clase java

Por lo tanto la codificación de la clase quedaria de la siguiente forma.
 

Lo interesante de esta clase es que el constructor recibe como parametro la conexion a la base de datos.

Ahora se crearan la clase correspondiente al patron delegate, la clase EzjaMVCDelegate del paquete delegate, es la ruta de entrada a la aplicación, es la clase que agrupara las acciones para cada uno d elos modulos de la aplicación. Para mas información ir a Business Delegate.

Creación de la clase EzjaMVCDelegate

1. Seleccionar el paquete com.ezjamvc.modelo.delegate
2. Clic secundario
3. Nuevo
4. Clase java

Por lo tanto la codificación de la clase quedaria de la siguiente forma.

 

Al revisar el codigo, nos podemos dar cuenta que al momento de definir el constructor, se obtiene una conexion a la base de datos, la cual se pasa como parametro a la instancia de ArticuloFacade que se crea.

Cabe mencionar que la estructura final de la aplicacion es la siguiente.

Ahora modificaremos ligeramente la clase de prueba para verificar el funcionamiento de la aplicacion.
 

Y con esto terminamos con todas las capas del modelo de la aplicacion propuesta. En la cual se aplican los 4 patrones antes mencionados:

  1. Data Transfers object
  2. Data Access object
  3. Session Facade
  4. Bussines Delegate

Despues crearemos la interfaz grafica, pero eso sera en una semana mas o menos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

finally

No deberías tener un finally siempre donde cierras la conexión, siempre que usas una conexión JDBC directamente?

 

De este modo, aunque se interrumpa el código porque se arroja otra excepción que no tienes contemplada (alguna de tiempo de ejecución, como NullPointerException, IllegalStateException, OutOfMemoryError, etc) el segmento dentro del   se ejecutará para cerrar esa conexión.

Imagen de domix

Como

Como comentario:

Felicidades, esta bien tu esfuerzo, veo que tienes buena implementación de los patrones, pero tienes en código duro los parámetros de conexión, tal vez no era tu intención meterte con esas cosas.

Saludos

Imagen de jasuncionez

finally

Estoy de acuerdo en parte de que la conexion y todos los recursos deben ser liberados con un bloque finally, de echo con algo como esto, en la clase EzjaMVCDelegate

 
Ahora bien no hay que olvidar que el finally se ejecuta siempre funcione o no funcione lo que este en el try
ahora si probamos la aplicacion despues de haberle agregado el bloque finnally que usted propone
 
Se tendrá este resultado

 
ahora si quitamos el fragmento finally que propone generamos un error de duplicidad de llave primaria a proposito por ejemplo art02 que ya existe se obtiene lo siguiente.

 
y siempre la conexion y demas recursos son liberados ya que asi lo indican cada uno de los metodos en la clase ArticuloDAO, por ejemplo la salida agregando un simple mensaje que indica lo que esta haciendo en los metodos close de la clase Articulo DAO que son llamados en el finally de todos los metodos CRUD, generando el error anterior seria el siguiente,

 
e insisto todos los recursos son liberados en ArticuloDAO en los metodos close

 

Y si probamos agregando un registro que no existe en la tabla se obtiene una salida como esta
 
Por lo que garantizamos que siempre se cerraran todos los recursos exista o no error alguno

Buena info

Buen tutorial

MUY BUEN TUTORIAL

TENGO UNA DUDA ESTE EJEMPLO LO PUEDO UTILIZAR PARA EXPLICAR EL MODELO-VISTA-CONTROLADOR Y SI ES ASÍ CUAL CLASE ES EL MODELO, QUE CLASE ES EL CONTROLADOR Y QUE CLASE ES LA VISTA Y SI NO ES MUCHA MOLESTIA DONDE PUEDO ENCONTRAR LA INTERFACE GRÁFICA GRACIAS!!

Imagen de benek

Re: MUY BUEN TUTORIAL

Quizá no sea el ejemplo adecuado para exponer el patrón MVC, porque esta serie de artículos de jasuncionez expone y explica varios patrones (DTO, Facade, Business-Delegate) y eso podría confundirte.

MVC está a nivel conceptual, puedes explicarlo sin necesidad de mostrar código, porque no está pegado a ningún framework, los frameworks son los que implementan esa "idea", pero si necesitas ejemplos en mi opinión uno de los frameworks que mejor exponen el concepto es Spring MVC. En otros frameworks el "controller" solamente se configura vía XML, pero en Spring MVC sí se desarrolla un controller para cada petición. Esto te puede servir.

En esta presentación tengo un par de slides sobre MVC que quizá te puedan servir.

Saludos.