(Anterior) | WAR's ("Web Archives") | "MVC" ("Model-View-Controller") | (Siguiente) |
Conexiones hacia Base de Datos
Para realizar una conexión hacia una Base de Datos a través de un JSP o Servlet se utiliza un driver, el cual generalmente es distribuido por la empresa productora de la Base de Datos, dicho driver toma la forma de un archivo JAR el cual contiene un conjunto de clases necesarias para conectarse a la determinada Base.
Para utilizar un driver en Java basta agregar el archivo JAR al CLASSPATH de ejecución, o bien, al directorio /WEB-INF/lib
del WAR ("Web-Archive"), esto permite conectarse a la Base de Datos a través del API JDBC ofrecido por el lenguaje Java. Mediante este API es posible buscar, actualizar, eliminar o realizar cualquier otro tipo de operaciones en una Base de Datos a través del lenguaje Java.
Una de las ventajas de aprender a utilizar el API JDBC es que una gran gamma de vendedores de Bases de Datos lo han adoptado, esto permite que cualquier código escrito en él sea ejecutable simplemente cambiando el correspondiente driver; en las siguientes secciones será explorado este API a través de JSP's y Servlets.
Conjunto de conexiones ("Pool")
El realizar conexiones de cualquier tipo en un sistema de computo es un proceso que implica el uso de diversos recursos, es por esta razón que es recomendable reutilizar cualquier tipo de conexión una vez establecida. La reutilización de estas conexiones establecidas ("latentes") se lleva acabo colocándolas en un grupo ("pool") para que cualquier programa | recurso del sistema pueda adquirirla, sin incurrir en las penalidades de generar la conexión desde una etapa inicial.
El mantener conexiones hacia Bases de Datos en una aplicación Java generalmente es de suma importancia, ya que se realizan búsquedas y actualizaciones constantemente, ante este constante uso de conexiones se opta por emplear algún tipo de "Pool" hacia Bases de Datos.
Hoy en día, existen un gran número de "Pools" disponibles para ambientes JSP's/Servlets, algunas de estas implementaciones se encuentran disponibles dentro del mismo driver para la Base de Datos, otras se encuentran disponibles dentro de las librerías del "Servlet Engine/Application Server", y otras como un producto distribuido por un tercero ajeno al driver y/o "Servlet Engine/Application Server".
A continuación se describe un "Pool" diseñado para ilustrar los puntos má finos de este mecanismo empleado en Bases de Datos.
Interfase IConexionPool para generar "Pool" de Bases de Datos
Clase ConexionPoolBasico.java para generar "Pool" de Bases de Datos.
El "Pool" para Bases de Datos descrito anteriormente representa una implementación muy básica, ya que solo contiene dos métodos, uno para extraer una conexión y otro para liberarla hacia el "Pool". Generalmente los "Pools" distribuidos por terceros incluyen una serie de métodos adicionales en su estructura interna, los cuales permiten generar conexiones al arranque, asignar un número máximo de conexiones al "Pool" y otra serie de funcionalidades, sin embargo, para utilizarse este tipo de "Pools" es necesario conocer los diversos métodos propietarios, lo cual implica documentación especifica del producto.
Ante este tipo de variaciones en los diversos "Pool's" disponibles en el mercado, se optará por utilizar una implementación lo más flexible y avanzada posible, y un "Pool" que cumple con estas características es aquel distribuido por la fundación Apache (los mismos creadores de Tomcat) el cual permite la reutilización de recursos y puede ser empleado en conjunción de diversas Bases de Datos.
Aunque es posible utilizar el "Pool" básico descrito con anterioridad, al emplear el "Pool" distribuido por Apache ( DBCP (http://jakarta.apache.org/commons/dbcp) ) se tendrá acceso a diversas funciones avanzadas y mecanismos que permiten mayor escalabilidad, además que la presencia del Software desarrollado por Apache, garantiza que éste sea mejorado constantemente y se tenga acceso al código fuente en caso de requerir agregar funcionalidades adicionales.
Búsqueda de Información
Uno de los principales tipos de aplicación es realizar búsquedas en información residente en Bases de Datos. La siguiente aplicación utiliza un JSP que contiene la lógica necesaria para realizar búsquedas empleando el "Pool" definido anteriormente.
Se debe hacer fuerte énfasis que la lógica no debe ser integrada en un solo documento (JSP) de este tipo, sino que debe ser modularizada en distintos JSP's y/o Servlets para facilitar su reutilización, sobre este concepto gira la estructura MVC ("Model-View-Controller") la cual será descrita a fondo en otra sección este curso.
Insertar y Actualizar Datos
El insertar información en una Base de Datos es otro elemento muy importante en desarrollos de JSP's y Servlets. La siguiente aplicación divide la lógica de inserción entre un Servlet y dos JSP's, esto permite que sean reutilizables los componentes en otras aplicaciones así como facilitar modificaciones, concepto que será explorado a detalle en MVC("Model-View-Controller").
El proceso para actualizar información en una Base de Datos es muy similar aquel llevado acabo para insertar información , al menos en lo que a sintaxis se refiere. A continuación se describe un proceso para actualizar Datos, sin embargo, a diferencia de los ejemplos anteriores que emplearon el "Pool" diseñado en este curso y una adquisición directa de la Base de Datos, será utilizado el "Pool" Apache DBCP y el mecanismo de recurso (JNDI) para adquirir conexiones.