ConexionPoolBasico.java
La siguiente Clase representa el "Pool" de conexiones que implementa la interfase diseñada anteriormente.
package com.osmosislatina.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 básico de conexión utilizando URL , contraseña y nombre */
|
Primeramente se define la librería ("package") a la cual debe pertenecer la Clase.
Son importadas las diversas librerías ("packages") de las que hará uso el "Pool" de Conexiones;
java.sql
contiene Clases comunes para conectarse a Bases de Datos mientrasjava.util
contiene Clases auxiliares para el lenguaje Java (comoStack
); todas estas Clases forman parte del JDK.Es declarada la Clase principal (
ConexionPoolBasico
) que implementa la InterfaseIConexionPool
definida anteriormente.Son definidos cuatro campos que representan los siguientes conceptos: Un URL de conexión para la Base de Datos, el nombre del usuario autorizado para accesar la Base de Datos, la contraseña del usuario autorizado, y un campo para contener una instancia de la Clase
Stack
el cual contendrá las conexiones "latentes" hacia la Base de Datos.NOTA sobre URL de Conexión : Un URL para conexión hacia Bases de Datos representa la ubicación física de la misma, este parámetro puede contener desde el Puerto TCP de Operación hasta el nombre virtual de la Base de Datos, generalmente varía dependiendo del creador del Driver JDBC el cual proporciona dichos detalles en su documentación.
Se define el Constructor de esta Clase, el cual al ser invocado asigna los diversos valores a los campos antes mencionados.
Es implementado el método
extraerConexion
el cual revisa la instancia del Objetopool
, si este se encuentra vacío es invocada la ClaseDriverManager
, mediante esta Clase se genera una conexión directa hacia la Base de Datos en cuestión; si el Objetopool
contiene elementos ("Conexiones Latentes") se extrae una de ahí mismo.DriverManager vs. DataSource
En este "Pool" se emplea la Clase
DriverManager
para adquirir una conexión hacia una Base de Datos, sin embargo, a partir del JDK 1.4 se recomienda emplear otra Clase llamadaDataSource
para adquirir este tipo de conexiones.La diferencia entre ambas es solo una cuestión de eficiencia, ya que el resultado obtenido por ambas Clases es un Objeto del tipo
Connection
; el "Pool" de Apache (DBCP) que será descrito en otros ejemplos de este curso emplea la ClaseDataSource
en su diseño interno.Al implementarse el metodo
liberarConexion
, la conexión utilizada como parametro de entrada es retornada al Objetopool
mediante el metodopush
; esto permite que dicha conexión regrese al grupo de conexiones "latentes" y sea reutilizable a través del metodoextraerConexion
.