Está en la página 1de 10

Introduccin Al Desarrollo De Aplicaciones Empresariales.

Tema: Prueba N 5 Alias Examen.

Nombre: Cristian Fuentes Salgado. Profesor: Gustavo Donoso. Fecha: 11 de julio de 2011.

1.- Patrn de Diseo Facade (30 ptos.)


En el Tutorial Gua de este semestre se trabaj con los EJB principalmente desde la perspectiva de que actuaran como EJB Session Facade. En ese contexto Facade o Fachada corresponde a un Patrn de Diseo Orientado a Objetos usualmente utilizado para resolver cierto tipo de problemas. Dado lo anterior, se pide:

1.1.- Defina claramente que se entiende por Patrn de Diseo (10 ptos.) Un patrn de diseo es una solucin en el desarrollo de software que permite enfrentar un problema de complejidad a nivel de desarrollo, y adems resolverlo. Para ser tal, un diseo, debe tener algunas caractersticas principales, como proveer de metodologas y catlogos reutilizables a la hora de desarrollar software, que la manera de realizar el diseo sea completamente estandarizada, de modo que no exista diferencia en cmo se implementa aqu y como se implementa en cualquier otra parte del mundo. Un patrn de diseo nos provee de la documentacin adecuada para resolver el tipo de problema especfico al cual nos enfrentamos, esto debido a que existen diversos tipos, de esta manera, no importa la problemtica a la cual nos enfrentemos, podemos acudir a los patrones de diseo, porque estos tienen una descripcin abstracta de la problemtica a la cual responden y resuelven.

1.2.- Describa claramente qu problema soluciona el Patrn de Diseo Fachada (Facade) (10 ptos.) EL patrn de diseo fachada (Facade) resuelve la problemtica de tener que acceder a diversas clases, implementando una nica interfaz que facilita la comunicacin con las clases requeridas. En la capa cliente no es necesario saber que clases estn detrs del patrn fachada, as tambin se puede cambiar aspectos de las clases ocultas sin intervenir el cliente, solamente habra que modificar el FACADE. Por ejemplo podemos tener ms de una clase cliente que necesitan usar mtodos de varias clases internas del sistema. Por ende cada clase tendra que comunicarse con todas las clases internas. Mediante el patrn facade se puede implementar una sola clase, que use los mtodos de las clases internas, y con la cual los clientes interacten de manera directa, haciendo ms fcil as la modificacin de las clases internas, sin tener que implementar cambios sobre la capa cliente.

1.3.- Ejemplifique y explique en forma simple, a nivel de cdigo java de consola, un uso posible para el Patrn de Diseo Facade (10 ptos.). Si tenemos un sistema simple orientado a objetos, con 4 clases que contienen los mtodos para interactuar mediante los objetos de ese tipo. Adems tenemos 2 clases clientes o principales que usan esos mtodos. Si analizamos esta problemtica veremos que cada clase principal o cliente debe usar los mtodos de 4 clases, asi mismo la otra clase cliente. Al ver un diagrama de clases por capa de este sistema se veria un poco engorroso y adems, tener que crear un objeto de cada tipo en cada clase principal para poder interactuar con los mtodos de esa clase, tambin es un poco molesto a la hora de realizar la implementacin, debido a lo difcil de leer que seria el cdigo, entre otras problemticas. Es aqu donde el FACADE entra en accin, podemos crear una clase intermedia, entre las clases clientes y las clases que proveen de los mtodos. En esta clase intermedia creamos objetos de las clases internas y implementamos sus mtodos dentro de mtodos de la clase. Ej: Si en una clase interna llamada C1 tenemos un mtodo que se llama getTodosNombre(), en la clase interna implementaramos un mtodo llamado C1getTodosNombre(){ C1 c = new C1(); c.getTodosNombre(); } De esta forma en las clases clientes cuando necesitemos usar el mtodo getTodosNombre() de la clase C1 llamaremos al mtodo C1getTodosNombre() de la clase intermedia que acta como Facade.

2.- Sevlet Controlador, EJB y JPA (70 ptos.)


En la pregunta 1 de la prueba anterior se present la siguiente figura que muestra un ejemplo de un listado de registros de un sistema cualquiera:

En aquella pregunta se le solicit que usara HTML y JSTL para resolver el problema de la actualizacin de los registros. En esta prueba se le solicitar que resuelva el problema usando la arquitectura propuesta por el Tutorial Gua de la asignatura, es decir que considere la problemtica anterior en el contexto de las capas JSP, Servlet Controlador, EJB y JPA. En ese sentido las preguntas a realizar sern las mismas propuestas en aquella prueba pero actualizadas al uso de la arquitectura definida por el Tutorial Gua, a saber: 2.1.- Construya un listado, como el anterior, que incluya un link para editar el registro y otro para eliminarlo, cada link debe estar asociado a una figura como la que se presenta en la imagen de ejemplo. Explique claramente cmo actan el Servlet Controlador, la capa EJB y la capa JPA en el logro de este objetivo. (20 ptos.) El primer paso para poder realizar la actividad solicitada en la pregunta es crear la base de datos que utilizaremos para el desarrollo de esta. En este caso decid utilizar un ejemplo sencillo sobre Gamers (Jugadores) y sus respectivos Games (Juegos). La tabla Gamers consta de los campos id_game, id_gamer, nombre y apellido. La tabla Games por su parte consta de id_game y nombre. Ambas tablas estn relacionadas por clave fornea en la columna id_game. Esta relacin nos permitir, al momento de manejar nuestros registros mediante entidades, una manera ms fcil de referenciar y tener acceso a los datos relacionados. Una vez que tenemos nuestra base de datos creada, mediante NetBeans creamos nuestras clases entidad, las cuales se encargaran de permitirnos manejar mediante JPA los registros de nuestra base de datos. Con el uso de persistencia se mejora y optimiza la interaccin con la base de datos, ya que mediante el uso de los mtodos Get y Set que proveen las clases entidad, el acceso y modificacin de los datos es mucho ms amigable que realizar una consulta o sentencia SQL. El semestre pasado vimos una parte pequea sobre persistencia, sin embargo ahora hemos explorado en un rea nueva, los Beans de sesin (EJB). Mediante el IDE NetBeans creamos Beans de sesin a partir de las clases entidad que habamos creado anteriormente. Se crearan varias interfaces, o clases, que bsicamente lo que hacen en proveernos de una capa ms para interactuar entre la capa servidora y el cliente.

Imagen N 1

En la imagen N 1 vemos los mtodos get y set de nuestra clase entidad. Podemos apreciar que contiene un mtodo getGames(), que retorna un Objeto de tipo Games, que es el objeto que est relacionado en nuestra base de datos. De esta forma podemos hacer alusin a que juego est asociado a un jugador, tambin a su vez podemos decidir que juego estar asociado a ese jugador mediante el mtodo setGames().

En nuestro Servlet controlador creamos una referencia a los beans que necesitaremos durante la ejecucin de nuestra aplicacin. En este caso utilizaremos las Fachadas, que son beans asociados a las clases entidad que manejan nuestra base de datos. En este caso utilizare solo 2 de los beans creados: GamersFacadeRemote y GamesFacadeRemote. Las fachadas son una interfaz que permite acceder a los atributos y mtodos de otras clases, permitiendo al cliente interactuar a travs de la fachada a clases de un nivel ms bajo.

Imagen N2 En la imagen N2 vemos la referencia a nuestros beans para acceder a la clase Gamers y Games.

Imagen N 3

Imagen N 4 En la imagen N 3 podemos ver una parte del cdigo del Servlet en el cual en el mtodo init() ejecutamos una bsqueda de todos os registros que tenemos almacenados, todo esto mediante la referencia de nuestro vean de sesin que fue referenciado en la variable gamersFacade, y es devuelto a travs del atributo gamers, el cual como se muestra en la Imagen N4 es utilizado para ir llenando los campos con los datos de nuestros registros. El mtodo findAll() devuelve un valor de tipo List<Gamers>, y en nuestra pgina jsp usamos esos datos obtenidos para visualizar nuestros jugadores. Se ve tambin como se realiza la referencia para actualizar el registro y para eliminarlo.

Imagen N 5 En la Imagen N5 podemos ver el resultado de esa ejecucin, viendo as los registros presentes en la base de datos, mediante el uso de beans de sesin, jpa y servlet.

2.2.- Construya el o los mdulos que permiten editar y guardar los cambios del registro seleccionado a travs del botn editar, ello considerando la arquitectura propuesta y explicando claramente cmo interactan Servlet Controlador, capa EJB y capa JPA. (30 ptos.). Para realizar la edicin de datos de nuestra tabla debemos crear un formulario jsp que nos permita realizar el ingreso de los datos que queramos modificar de nuestro registro. Adems de esto, en nuestro Servlet controlador debemos especificar las acciones necesarias para lograr este cometido. Primero obtenemos el gamer especificado, en este caso ser el que haya sido seleccionado en la tabla anterior y lo enviamos a la pgina en el atributo verGamers, tambin buscamos todos los juegos de nuestra BD para ponerlos a disposicin del usuario, para que as pueda seleccionar el que desee asignarle al Gamer que desea actualizar. Cabe destacar, de nuevo, que estas bsquedas se realizan a travs de nuestros Beans anteriormente referenciados (gamersFacade y gamesFacade).

Imagen N 6

En nuestra pgina jsp se ver as:

Imagen N 7

El cdigo de la pgina es el sgte:

Imagen N 8 Imagen N8 muestra el cdigo HTML que muestra el men de actualizacin de datos. Adems podemos ver el parmetro verGamers enviado desde el Servlet, que nos permite mostrar el gamer correspondiente.

Al realizar los cambios deseados se enva la peticin de accin al servlet con el request: /correcto, el cual desencadenara otra accin del servlet, la cual ser actualizar el registro.

Imagen N 9

En la Imagen N9 podemos ver que se guardan los parmetros obtenidos desde la pagina jsp, luego son usados los id para encontrar los respectivos registros, cada registro es guardado en un objeto del tipo correspondiente.

Luego se actualizan los campos, de manera que los antiguos sean reemplazados por los definidos por el usuario en la pagina de actualizacin.

Cabe destacar la parte donde se realiza la asignacin del campo que hace referencia a la otra tabla, esta actualizacin se hace mediante el mtodo setGames(Games game), pasamos el objeto de tipo juego directamente, asi no hay necesidad de especificar el id del juego ni nada, sino que simplemente realizamos la referencia directa. Luego le damos la orden de editar el registro asociado a ese gamer.

Este cdigo equivale al commit() utilizado al trabajar con Entity Manager (Materia vista el semestre anterior), que bsicamente lleva a cabo los cambios realizados al objeto y lo hace persistente.

Imagen N 10 La imagen N10 muestra la tabla despus se su posterior edicin y eliminacin de un registro. En el sgte punto se explicara cmo se realiza la eliminacin.

2.3.- Finalmente, haga lo mismo solicitado en la pregunta 2.2. pero para operacionalizar la funcin de eliminar el registro seleccionado a travs del botn eliminar (20 ptos.). Para realizar la eliminacin se realiza algo parecido a lo anterior, solo que esta vez no se utilizan los mtodos set, sino que mas bien se realiza la bsqueda del gamer y mediante el mtodo remove() se elimina de manera fcil y rpida.

Imagen N 11 La Imagen N 11 muestra el cdigo java que est presente en el servlet y que se encarga de buscar el jugador a eliminar y eliminarlo, claro est.

También podría gustarte