Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TAGSI03 TareaTecnSI Grupo7 PDF
TAGSI03 TareaTecnSI Grupo7 PDF
Facultad de Ingeniería
Universidad de la República Oriental del Uruguay
Edición 2003
Docente encargado:
Dr. Ing. Hermann Steffen
1
Estado de los accesos a Bases de Datos
GRUPO 7
Marcos Marsicano – CI: 3.659.140-9
Ana Inés Mora – CI: 3.589.162-0
Marquicio Pagola – CI: 3.213.360-1
Leandro Portela – CI: 4.153.495-1
INDICE
Introducción.................................................................................................................. 4
¿ Qué es la API de JDBC ?........................................................................................ 4
¿ Por qué crear la API JDBC ? .................................................................................. 6
¿ Cómo debía ser JDBC ? ......................................................................................... 6
¿ Cómo funciona JDBC ?.......................................................................................... 7
Una base para otras APIs .......................................................................................... 8
Requisitos..................................................................................................................... 8
¿ Qué se debe instalar ?............................................................................................. 8
1. Instalar Java y el JDBC en la máquina............................................................... 8
2. Instalar un driver en la máquina......................................................................... 9
3. Instalar el Controlador de Base de Datos si es necesario. ................................... 9
Compatibilidad con SQL........................................................................................... 9
Arquitectura................................................................................................................ 10
El Modelo JDBC de Java ........................................................................................ 10
Tipos .......................................................................................................................... 11
Tipo 1: Puente JDBC-ODBC. ................................................................................. 11
¿ Qué es el Puente JDBC-ODBC ? ...................................................................... 12
El puente JDBC- ODBC...................................................................................... 13
Obteniendo un Driver JDBC ............................................................................... 13
Implementación del puente.................................................................................. 13
Instalación........................................................................................................... 13
Usando el puente................................................................................................. 13
Usando el puente desde un Applet....................................................................... 13
La mayoría de los Browsers no soportan el Puente .............................................. 13
Drivers ODBC conocidos para trabajar con el puente .......................................... 14
Tipo 2: Driver parcial de Java ................................................................................. 15
Tipo 3: Drivers Java puros para middleware de bases de datos................................ 16
Tipo 4: Driver Java puro directo a la base de datos.................................................. 17
Versiones.................................................................................................................... 17
Qué incluye la API de JDBC 2.0 ............................................................................. 18
¿ Qué es pooling de conexiones ?............................................................................ 19
La API del núcleo de JDBC 2.0........................................................................... 19
El paquete opcional de la API JDBC 2.0 ............................................................. 19
Beneficios del pooling de conexiones...................................................................... 19
Pautas para escribir un driver JDBC............................................................................ 20
Requerimientos para todos los drivers ..................................................................... 20
Implementar métodos en las interfaces ................................................................ 20
Implementar un inicializador estático .................................................................. 21
Soportar extensiones al SQL-92 Entry Level ....................................................... 21
Soportar funciones escalares ............................................................................... 22
Proveer bloqueo para actualizaciones y eliminaciones posicionadas .................... 24
Soportar Multithreading ...................................................................................... 24
Lanzar excepciones en presencia de parámetros de entrada truncados ................. 24
Usar comportamientos por defecto para los tipos de datos SQL3......................... 24
Variantes permitidas ............................................................................................... 24
Cuando una funcionalidad no es soportada.......................................................... 25
Variación en propiedades fundamentales............................................................. 25
Agregando funcionalidad .................................................................................... 25
Responsabilidades de seguridad de los drivers......................................................... 25
Verificar conexiones TCP compartidas................................................................ 25
Verificar todos los accesos locales a archivos...................................................... 26
Asumir lo peor .................................................................................................... 26
Lanzar una SQLException en caso de excepciones.............................................. 26
Implementaciones sugeridas.................................................................................... 26
Búsqueda anticipada de filas ............................................................................... 26
Ofrecer métodos "finalize” para Applets ............................................................. 27
Evitar estados dependientes de la implementación............................................... 27
Ventajas / Desventajas ................................................................................................ 27
Similitudes y diferencias con ODBC....................................................................... 27
API JDBC Vs ODBC.............................................................................................. 28
Comparación del uso de JDBC en un modelo de 2 capas y en uno de 3 capas: ........ 29
Alternativas a JDBC ............................................................................................... 30
Limitaciones de JDBC ............................................................................................ 30
Ventajas de la tecnología JDBC .............................................................................. 30
Influencia de datos de empresa existentes............................................................ 30
Desarrollo simplificado de la empresa................................................................. 31
Cero configuración para redes de computadoras.................................................. 31
Cero Instalación .................................................................................................. 31
Impulso en la industria ........................................................................................ 31
Conexión a la base de datos identificada por una URL ........................................ 31
Conclusiones .............................................................................................................. 32
Referencias ................................................................................................................. 33
Introducción
Durante los últimos años, la industria de la computación ha visto una explosión
en el crecimiento de Internet y la World Wide Web (WWW). En un corto período de
tiempo, la WWW ha evolucionado desde la entrega de simples páginas web estáticas
hasta la disponibilidad de las optimizadas páginas web dinámicas, creadas a través de
varias extensiones de los servidores Web existentes.
El próximo paso en esta evolución, era el uso de Java para crear applets que
permitieran aplicaciones de misión crítica de negocio y transacciones procesadas sobre
la Internet / intranet. Este nivel requería nuevos métodos de alta performance y robustos
para acceder a los repositorios de datos corporativos. Uno de estos métodos es JDBC –
el estándar de Java para Conectividad de Bases de Datos.
JDBC es una API de Java para acceder, virtualmente a cualquier tipo de datos
tabulares. La API JDBC consiste en un conjunto de clases e interfaces escritas en el
lenguaje de programación Java que provee una API estándar para desarrolladores de
herramientas/bases de datos y hace posible la escritura de importantes aplicaciones de
base de datos industriales usando una API cien por ciento Java.
Este incluye la API JDBC 1.0, que provee las funcionalidades básicas para el
acceso a datos, haciendo fácil el envió de sentencias SQL a sistemas de bases de datos
relacionales. La API JDBC 2.0 complementa a la API básica con elementos más
avanzados haciendo posible interactuar con otros tipos de fuentes de datos, tales como
archivos conteniendo datos tabulares; también provee una forma estándar para acceder a
los últimos elementos objeto-relacional que son soportados por los manejadores de
bases de datos relacionales de hoy en día. Además, la nueva API incluye cosas tales
como result set navegable y actualizable, actualizando múltiples ítems de datos con un
simple comando, y performance mejorada. Esta extiende la tecnología JDBC más allá
del cliente, hacia el servidor con “connection pooling” y transacciones distribuidas.
Connection pooling permite a los programadores reusar conexiones de bases de datos,
no siendo necesario hacer una nueva conexión a la base de datos para cada comando
nuevo de JDBC.
El valor de la API JDBC es que una aplicación puede acceder virtualmente a
cualquier fuente de datos y correr en cualquier plataforma con la Máquina Virtual de
Java. En otras palabras, en la API JDBC, es innecesario escribir un programa para
acceder a una base de datos Sybase, otro programa para acceder a una base de datos
Oracle, otro programa para acceder a una base de datos IBM DB2, etc. Uno puede
escribir un programa simplemente usando la API JDBC, y el programa será capaz de
enviar SQL u otras sentencias a la fuente de datos. Y, con una aplicación escrita en el
lenguaje de programación Java, no es necesario preocuparse de escribir diferentes
aplicaciones para correr en diferentes plataformas. La combinación de la plataforma
Java y la API JDBC permite a un programador escribir una vez y correr en cualquier
lado.
La API de JDBC 2.0 extiende lo que puede hacerse con la plataforma Java. Por
ejemplo, la API de JDBC hace posible publicar una página web conteniendo un applet
que usa información obtenida desde una fuente de datos remota. O una empresa puede
usar la API de JDBC para conectar a todos sus empleados (aún si ellos están usando una
conglomeración de máquinas Windows, Macintosh y UNIX) a una o más bases de datos
internas vía una intranet. Con más y más programadores usando el lenguaje de
programación Java, la necesidad de un acceso a datos fácil y universal desde Java
continúa creciendo.
Al igual que ODBC, JDBC está fuertemente influenciada por las APIs
programables de bases de datos ya existentes, tales como X/OPEN SQL Call Level
Interface. Sun quiso reusar la abstracción clave de estas APIs, que sería fácilmente
aceptada por los vendedores de bases de datos y capitalizada en el conocimiento
existente de ODBC y desarrolladores de clientes SQL. Además, Sun reconoció que
derivando su API de otras ya existentes podía proveer rápidos desarrollos de soluciones
para motores de bases de datos que soportaran los viejos protocolos. Especialmente, se
trabajó en paralelo con Intersolv para crear un puente con ODBC que transformara
llamadas JDBC en llamadas ODBC, dando así acceso desde aplicaciones Java a
cualquier DBMS que soportara ODBC.
Por ejemplo, aquí se tienen tres casos en donde esta solución es una necesidad:
N Cuando existe la necesidad de diseminar información internamente en una
compañía grande cuando los departamentos han sido estandarizados en
diferentes plataformas.
N Si una corporación ha pasado por una fusión y se encuentra con diferentes
sistemas operativos y bases de datos.
N Para e-commerce, aplicaciones que corren sobre Internet, cuando la compañía
no tiene control sobre el software que sus clientes usan. Los clientes solo
necesitan la tecnología Java apropiada, que puede ser descargada en el momento
a sus computadoras.
Todo el trabajo con JDBC comienza con la clase DriverManager, que es la que
establece las conexiones con las fuentes de datos, mediante los drivers o controladores
JDBC.
Requisitos
¿ Qué se debe instalar ?
Todo lo que se necesita instalar se describe a continuación:
Un área de dificultad es que los tipos de datos usados por diferentes DBMSs
(DataBase Management Systems) a veces varía, y las variaciones pueden ser
significantes.
Una manera en que la API JDBC maneja este problema es permitiendo que
cualquier cadena de consulta sea pasada hacia el driver de DBMS. Esto significa que
una aplicación es libre de usar tantas funcionalidades de SQL como desee, pero
corriendo el riesgo de recibir un error en algunos DBMSs. En efecto, una consulta de
aplicación puede ser algo más que SQL, o puede ser un dialecto especializado de SQL
diseñado para DBMSs específicos (para consultas de documentos o imágenes, por
ejemplo).
Una segunda forma en que JDBC maneja los problemas de compatibilidad con
SQL es proveyendo de cláusulas de escape del estilo ODBC. La sintaxis de escape
provee una sintaxis estándar de JDBC para muchas de las áreas comunes de
divergencias de SQL. Por ejemplo, hay escapes para literales de fechas y para llamadas
a procedimientos almacenados.
Dado que la API JDBC es usada como una API base para desarrollar
herramientas de acceso a bases de datos y otras APIs, también tiene que afrontar el
problema de compatibilidad para cualquier cosa construida sobre ella. Un driver JDBC
debe soportar por lo menos ANSI SQL-92 Entry Level. Note que aunque la API JDBC
2.0 incluye soporte para SQL3 y SQLJ, los drivers JDBC no están obligados a
soportarlos.
Arquitectura
El Modelo JDBC de Java
JDBC logra sus metas a través de un conjunto de interfaces Java, cada una
implementada en forma diferente por proveedores individuales. El conjunto de clases
que implementan las interfaces de JDBC, para un motor de bases de datos particular, es
lo que llamamos driver JDBC. Existen drivers específicos para cada DBMS, que son
implementaciones diferentes para cada uno de ellos. Cada uno de estos drivers posee
código diferente para establecer la comunicación con el DBMS correspondiente.
Existen varias configuraciones para ejecutar una aplicación usando JDBC, pero lo
principal es tener accesible el driver que se conectará al DBMS. La idea detrás de JDBC
es que al desarrollar una aplicación para una base de datos, no se tenga que pensar sobre
la implementación de las clases subyacentes, ya que JDBC oculta las características
específicas de cada base de datos y nos permite preocuparnos sólo en los aspectos de la
aplicación que estamos desarrollando.
JDBC consiste básicamente de cinco clases en el paquete java.sql. Las clases son:
N java.sql.Driver que representa al driver.
N java.sql.DriverManager que es la que establece las conexiones con las fuentes de
datos, mediante la carga de los drivers o controladores JDBC.
N java.sql.Connection hace la conexión a la base de datos.
N java.sql.Statment ejecuta las cláusulas.
N java.sql.ResultSet recibe los resultados de las cláusulas que se ejecutaron.
Los drivers de bases de datos JDBC se definen mediante clases que implementan
la interfaz Driver. Cada driver sabe como convertir peticiones SQL para una base de
datos concreta. Si no se dispone del driver adecuado, no se podrá establecer una
conexión con la base de datos deseada, ya que el JDBC depende de las
implementaciones concretas de cada fabricante. Por lo tanto, lo primero que debe llevar
a cabo un programa es cargar el driver adecuado para que el código Java pueda
comunicarse con la base de datos. Sólo la clase java.sql.DriverManager se encuentra
completamente implementada; las demás son implementadas por el driver específico de
la base de datos con la que se desea trabajar.
Tipos
Una vez que su motor de base de datos esta instalado y su base de datos esta
configurada, necesitará un driver JDBC para el motor de base de datos. Los motores de
bases de datos mas comerciales, tales como Oracle, tienen drivers comerciales JDBC.
La mayoría de estos, sin embargo, le permiten tenerlo por un período de prueba gratis
para experimentar con el driver.
Estos drivers vienen en cuatro variantes. Los tipos 1 y 2 están pensados para
programadores que escriben aplicaciones, mientras que los tipos 3 y 4 son típicamente
usados por los vendedores de Middleware o bases de datos. La siguiente es una
descripción mas detallada de estos drivers:
API JDBC
ODBC
Lib. Cliente DB
Servidor
B.D.
El Puente JDBC-ODBC fue desarrollado por Sun para tomar ventaja del
grandísimo número de fuentes de datos para ODBC. Las applets Java son escritas
usando la API de Java. Estas llamadas a JDBC son pasadas al puente JDBC-ODBC y
convertidas en las APIs ODBC del lenguaje C. Las llamadas ODBC son luego pasadas
al driver propietario ODBC para el almacenamiento de los datos en el back-end.
Instalación
El puente es instalado automáticamente con Java 2 SDK, Standard Edition,
como paquete sun.jdbc.odbc. Se debe ver la propia información de su vendedor de
drivers para ODBC para la instalación y configuración de ODBC. No se necesita una
configuración especial para el puente. Se debe referir al proveedor de base de datos para
información de configuración e instalación.
Usando el puente
El puente es usado abriendo una conexión JDBC usando una URL con el
subprotocolo odbc. Antes de que la conexión sea establecida, la clase del driver del
puente, sun.jdbc.odbc.JdbcOdbcDriver, debe ser también agregada a la propiedad
Java.lang.System llamada jdbc.drivers, o debe ser explícitamente cargada usando
un cargador de clases Java. La carga explícita se puede hacer con la siguiente línea de
código:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Pros: Es una buena aproximación para aprender JDBC. Puede ser útil para compañías
que ya tengan drivers ODBC instalados en cada máquina cliente – típicamente el caso
de máquinas con Windows corriendo aplicaciones productivas. Quizás sea la única
manera de tener acceso a bases de datos de escritorios de bajo porte.
Contras: No es para aplicaciones de gran escala. La performance se ve afectada debido
a que hay algún costo asociado al trabajo de traducción entre JDBC y ODBC. Además,
no soporta todas las características de Java. Los usuarios están limitados por la
funcionalidad subyacente del driver ODBC.
Tipo 2: Driver parcial de Java
Convierte las llamadas que el desarrollador escribe en la API JDBC
de programación de aplicaciones en llamadas que conectan con la interfaz de
programación de aplicaciones de la máquina cliente para la base de datos específica.,
tal como Informix, IBM, Oracle o Sybase. De nuevo, esta solución requiere software en
el sistema del cliente.
Aplicación
Java
API JDBC
Lib. Cliente DB
Servidor
B.D.
Pros: La performance es mejor que la del Tipo 1, en parte porque el driver del Tipo 2
contiene código compilado que está optimizado para el sistema operativo del servidor
de bases de datos del back-end.
Contras: El usuario necesita asegurarse que el driver JDBC de la base de datos del
vendedor esté cargado en la máquina cliente. Debe haber código compilado para cada
sistema operativo sobre el cual se desee ejecutar la aplicación. El mejor uso de éste es
para ambientes controlados tales como Intranets.
Tipo 3: Drivers Java puros para middleware de bases de datos
Éste tipo de driver tiene la característica principal de que provee conectividad
para muchas bases de datos diferentes. Traduce llamadas JDBC al protocolo del
middleware del vendedor, el cual, a su vez, es convertido al protocolo específico de la
base de datos por el software del servidor del middleware. Como se puede ver, este
driver es extremadamente flexible ya que no requiere código instalado en el cliente y
que un único driver puede proveer acceso a múltiples bases de datos.
API JDBC
Servidor
B.D.
Pros: Mejor performance que los Tipo1 y Tipo 2. Puede ser usado cuando una
compañía tiene múltiples bases de datos y quiere usar un único driver JDBC para
conectarlas a todas. Está basado en el servidor, así que no se necesita código del driver
de JDBC en cada máquina cliente. Por razones de performance, el componente del
servidor del back-end está optimizado para el sistema operativo sobre el cual la base de
datos se está ejecutando.
Contras: Se necesita algo de código específico en el servidor del middleware. Si el
middleware debe ejecutarse en diferentes plataformas, puede que sea mas efectivo un
driver de Tipo 4.
Tipo 4: Driver Java puro directo a la base de datos.
Convierte llamadas JDBC en paquetes que son enviados a través de la red en el
formato propietario usado por la base de datos específica. Permite realizar una llamada
directa desde la máquina cliente a la base de datos.
API JDBC
Servidor
B.D.
Pros: Mejor performance que los Tipos 1 y 2. No se necesita instalar software especial
en el cliente y el servidor. Puede ser descargado dinámicamente.
Cons: No esta optimizado para el sistema operativo del servidor, asi que el driver no
puede tomar ventaja de las características del sistema operativo. ( El driver esta
optimizado para la base de datos y puede tomar ventaja de las funcionalidades de la
base de datos del servidor). Además, el usuario necesita un driver diferente para cada
base de datos diferente.
Versiones
JDBC Básico cubre la API JDBC 1.0, el cual está incluido en el JDK 1.1.
La segunda parte cubre la API JDBC 2.0, que forma parte de la versión 1.2 del JDK.
También describe brevemente las extensiones de la API JDBC, que, al igual que otras
extensiones estándar, serán liberadas independientemente.
Enviar múltiples secuencias SQL a la base de datos como una unidad, o batch.
Utilizar los nuevos tipos de datos SQL3 como valores de columnas.
Soportar Multithreading
Todas las operaciones sobre los objetos java.sql y javax.sql requieren ser seguras
en contextos de multihilos. Deben ser capaces de lidiar correctamente con la existencia
simultanea de varios hilos (threads) invocando el mismo objeto. Aún cuando se espere
que en la práctica la mayoría de los objetos JDBC serán accedidos desde un solo hilo, es
necesario el soporte para multihilos.
Algunos drivers pueden permitir mayor concurrencia que otros, pero los
desarrolladores deberían asumir una ejecución completamente concurrente. Si el driver
requiere alguna forma de sincronización, entonces él debe proveerla.
Variantes permitidas
Debido a las variaciones ya mencionadas entre los distintos DBMS, tanto en las
funcionalidades como en la sintaxis, se permite cierta variación en las implementaciones
de drivers. El SQL usado por una base de datos puede diferir del usado por otras bases
de datos. Por ejemplo, diferentes bases de datos ofrecen diferente soporte para los outer
joins. También puede variar la sintaxis para algunas de las características de SQL.
Agregando funcionalidad
Los vendedores de bases de datos que quieren exponer funcionalidades
adicionales que son soportadas por sus bases de datos pueden crear subclases de las
clases JDBC existentes y ofrecer métodos adicionales en las nuevas subclases.
En el caso de que un driver JDBC quiere compartir una única conexión TCP
entre diferentes conexiones a bases de datos, es éste el que tiene la responsabilidad de la
verificación de los accesos a bases de datos usando esa conexión. Por lo tanto, antes de
permitirse la reutilización una conexión TCP existente, el driver JDBC deberá verificar
con el manejador de seguridad que quien hace la invocación actual tiene permitido
conectarse a esa máquina. En los casos en que no esté permitida la conexión el método
SecurityManager.checkConnect lanzará una java.lang.SecurityException.
Como con las conexiones TCP, el driver debe sólo ocuparse de los problemas de
seguridad si los archivos son compartidos entre múltiples hilos invocadores y el driver
está siendo como código confiable.
Asumir lo peor
Algunos drivers pueden usar métodos nativos para interconectar con librerías de
bajo nivel de la base de datos. En estos casos, puede ser difícil de determinar cuales
archivos o conexiones de red serán abiertas por las librerías de más bajo nivel. En estas
circunstancias el driver debe asumir el peor caso, en cuanto a seguridad, y negar todo el
acceso a bases de datos a Applets descargadas a menos de que el driver confíe
completamente en que el futuro acceso será inofensivo.
Implementaciones sugeridas
Ventajas / Desventajas
Similitudes y diferencias con ODBC
Sun Microsystems ha logrado con Java toda una plataforma empresarial y cuenta
con JDBC para el acceso a bases de datos compatibles con ODBC, es decir, se manipula
la información mediante objetos. JDBC hace para Java lo que ODBC para C (o Visual
Basic). A diferencia de ODBC, no se indica que nivel de SQL usar (ODBC tiene varios
niveles), sino que simplemente se pasan las cláusulas SQL al driver específico de la
base de datos. Es un complemento a la plataforma empresarial Java para manejar bases
de datos relacionales o que entienden SQL.
Microsoft ha introducido nuevas API mas allá de ODBC, como OLE (Object
Linking and Embedding) , ADO (ActiveX Data Objects), y RDS (Remote Data
Service). De alguna manera, estas APIs van en la misma dirección que JDBC; por
ejemplo, OLE y ADO son interfaces orientadas a objetos que pueden ser usadas para
ejecutar sentencias SQL. Sin embargo, OLE es una interfaz de bajo nivel designada para
herramientas más que para desarrolladores. ADO es mas nueva y se parece mas a
JDBC, pero no está desarrollada en un ambiente Java puro. Tampoco RDS esta escrito
en Java, y no es portable. Más recientemente, Microsoft ha introducido UDA (Universal
Data Access) que cubre lo que es OLE DB, ADO, RDS y ODBC. La API 2.0 de JDBC
cubre toda la funcionalidad importante de UDA y posee además otras características que
no se encuentran en UDA, como por ejemplo soporte para SQL3.
Otro problema que presenta la arquitectura en dos capas es que muchos drivers
de JDBC contienen código nativo, dependiente del sistema, que es rechazado por los
navegadores web debido a temas de seguridad, por lo que es necesario utilizar drivers
implementados en java. Java se encuentra bien posicionado para la implementación de
soluciones en 3 capas ya que facilita la comunicación vía sockets entre el servidor y el
cliente y soporta la programación multi-hilos necesaria para el acceso multi-usuario.
En cuanto a economía de transmisión y seguridad de los datos, en la arquitectura
de dos capas, cada aplicación del cliente debe comprender la aplicación JDBC, es decir,
tiene visibilidad sobre la misma. Éste código adicional es transmitido a los clientes,
causando una necesidad de procesamiento extra de este lado. Por otro lado, la aplicación
cliente se conecta directamente con el servidor de base de datos, necesitando por lo
tanto un usuario y contraseña no encriptados para el acceso, lo cual dificulta la creación
de una buena política de seguridad. En el modelo de 3 capas, la aplicación cliente es
más pequeña, siendo su principal tarea la de recuperar datos y mostrarlos en pantalla
(cliente más fino). Respecto al otro aspecto mencionado en el párrafo, en la arquitectura
de 3 capas, la capa intermedia puede ocultar al cliente cualquier tipo de información
referente al servidor de la base de datos, siendo ésta capa intermedia la que sabe como
encontrar y manipular los datos. El servidor intermedio puede proveer a los clientes de
un pool de conexiones al DBMS para evitar la necesidad de tener un usuario y
contraseña para la base de datos.
Alternativas a JDBC
Sin JDBC, sólo existen soluciones propietarias dispares de acceso a bases de
datos. Dichas soluciones propietarias obligan al diseñador a construir una capa de
abstracción por encima para crear código independiente de la base de datos. Sólo luego
que ésta capa de abstracción está completa es que el desarrollador se mueve realmente a
escribir la aplicación. Además, la experiencia que uno tiene con esa capa de abstracción
no se traduce inmediatamente a otros proyectos u otras personas o empresas que casi
están usando ciertamente sus propias capas de abstracción para proporcionar el acceso a
una variedad de motores de bases de datos. Claro, la especificación de ODBC existe
para mantener esta capa de abstracción universal para los lenguajes como C y C++ así
como para herramientas de desarrollo populares como Delphi, PowerBuilder, y
VisualBasic. Desgraciadamente, ODBC no disfruta de la independencia de plataforma
que posee Java. Usando el diseño de interfaz de JDBC, la aplicación servidora puede
elegir, en tiempo de ejecución, la base de datos según que tipo de cliente está conectado.
Limitaciones de JDBC
Una de las desventajas es que Java es un poco lento. Sin embargo, el idioma
promete estar con nosotros como una herramienta básica durante muchos años. JDBC es
sumamente útil para el desarrollo de aplicaciones del lado del servidor en que se puede
controlar el ambiente en un buen grado.
Con la API de JDBC, no se requiere ninguna configuración del lado del cliente.
Con un driver escrito en Java, toda la información que se necesita para hacer una
conexión está completamente definida por el URL de JDBC o por un objeto registrado
por medio de JNDI. Cero configuración del lado del cliente permite la centralización del
mantenimiento del software.
Cero Instalación
Un driver basado en JDBC no necesita de una instalación especial; es bajado
automáticamente como parte de la aplicación que realiza las llamadas JDBC.
Impulso en la industria
Líderes en bases de datos, middleware y vendedores han estado construyendo el
soporte para la tecnología JDBC en muchos productos. Esto asegura que clientes
puedan construir aplicaciones portables de Java mientras escogen, de una amplia gama
de productos competitivos, la mejor solución que se adecue a sus necesidades.
Conclusiones
Las grandes compañías desarrolladoras de bases de datos apoyaron casi desde un
principio a JDBC como tecnología de conexión a sus DBMS. Esto, sumado al auge de
Java, presionó al resto de las compañías (que no querían verse marginadas en un
mercado creciente y muy competitivo) a seguir el mismo camino, y ofrecer soporte
JDBC. Lo anterior derivó en la abundancia de drivers, middlewares y aplicaciones que
utilizan JDBC.
Java, junto con JDBC, constituyen una herramienta de uso recomendable para
desarrollar aplicaciones orientadas a objetos con acceso a bases de datos. No obstante,
debe evaluarse cuidadosamente las características del medio donde se pondrá en
producción, los diferentes requerimientos de performance, seguridad y robustez para
determinar cual es la variante (configuraciones de arquitectura) de ésta herramienta que
se ajuste más a los requerimientos de la aplicación.
Referencias
Tutorial JDBC
http://java.programacion.net/jdbc/
Sybase jConnect for JDBC Technical Whitepaper - Technical whitepaper for jConnect
http://www.sybase.com/
http://www.sybase.com/detail/1,6904,1009766,00.html
Introduction to Databases for the Web: Pt 4 - By Selena Sol - November 23, 1998
http://www.databasejournal.com/sqletc/article.php/26861_1431601_1
Database Programming with JDBC and Java -By George Reese - 1st Edition June 1997
1-56592-270-0, Order Number: 2700
Chapter 4: http://www.oreilly.com/catalog/javadata/chapter/ch04.html