Está en la página 1de 3

Acceso a Bases de Datos Java IDL

El realizar conexiones de cualquier tipo en un sistema de computo es un proceso que implica el uso de diversos recursos, es por esta razn que es recomendable reutilizar cualquier tipo de conexin una vez establecida. La reutilizacin de estas conexiones establecidas ("latentes") se lleva acabo colocndolas en un grupo ("pool") para que cualquier programa | recurso del sistema pueda adquirirla, sin incurrir en las penalidades de generar la conexin desde una etapa inicial. El mantener conexiones hacia Bases de Datos en una aplicacin Java generalmente es de suma importancia, ya que se realizan bsquedas y actualizaciones constantemente, ante este constante uso de conexiones se opta por emplear algn tipo de "Pool" hacia Bases de Datos. Hoy en da, existen un gran nmero 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 libreras del "Servlet Engine/Application Server", y otras como un producto distribuido por un tercero ajeno al driver y/o "Servlet Engine/Application Server".

A continuacin se describe un "Pool" diseado para ilustrar los puntos ms finos de este mecanismo empleado en Bases de Datos.
package unisota.basesdedatos; import java.sql.*; import java.util.*; public class ConexionPoolBasico implements IConexionPool { protected Stack pool; protected String connectionURL; protected String userName; protected String password; /*** Genera Pool bsico de conexin utilizando URL , contrasea y nombre */ public ConexionPoolBasico(String aConnectionURL, String aUserName, String aPassword) { connectionURL = aConnectionURL;

userName = aUserName; password = aPassword; pool = new Stack(); } /** Adquiere conexin del Pool o genera una nueva si el pool esta vaco* */ public synchronized Connection extraerConexion() throws SQLException { // Si el pool no esta vacio, tomar una conexion if(!pool.empty()) { return (Connection) pool.pop(); } else { // Entonces generar una conexion nueva return DriverManager.getConnection(connectionURL, userName, password); } } /** Regresar conexion al pool */ public synchronized void liberarConexion(Connection conn) throws SQLException { conn.close(); pool.push(conn); } }

Como primer paso se define una Interfase Java a la cual debe apegarse el diseo del "Pool" para Bases de Datos.
package unisota.basesdedatos; public interface IConexionPool { public Connection extraerConexion() throws SQLException; public void liberarConexion(Connection conn) throws SQLException; }

Primeramente se define la librera ("package") a la cual debe pertenecer dicha interfase. Son definidos dos mtodos para la interfase, uno llamado extraerConexion empleado para adquirir conexiones y otro nombrado liberarConexion utilizado para liberar conexiones. El "Pool" para Bases de Datos descrito anteriormente representa una implementacin muy bsica, ya que solo contiene dos mtodos, uno para extraer una conexin y otro para liberarla hacia el "Pool". Generalmente los "Pools" distribuidos por terceros incluyen una serie de mtodos adicionales en su estructura interna, los cuales permiten generar conexiones al arranque, asignar un nmero mximo de conexiones al "Pool" y otra serie de funcionalidades, sin embargo, para utilizarse este tipo de "Pools" es necesario conocer los diversos mtodos propietarios, lo cual implica documentacin especifica del producto. Ante este tipo de variaciones en los diversos "Pool's" disponibles en el mercado, se optar por utilizar una implementacin lo ms flexible y avanzada posible, y un "Pool" que cumple con estas caractersticas es aquel distribuido por la fundacin Apache (los mismos creadores de Tomcat) el cual permite la reutilizacin de recursos y puede ser empleado en conjuncin de diversas Bases de Datos. Aunque es posible utilizar el "Pool" bsico 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, adems que la presencia del Software desarrollado por Apache, garantiza que ste sea mejorado constantemente y se tenga acceso al cdigo fuente en caso de requerir agregar funcionalidades adicionales

También podría gustarte