JDBC

Con la ayuda de JDBC, la habilidad de JAVA para integrarse con DBMS comerciales y su naturaleza orientada al manejo de la Red, es posible crear un ambiente ideal tipo cliente-servidor.

Al navegar en el World Wide Web, es fácil darse cuenta de que existe ya mucha información. Muchas compañias estan usando bases de datos relacionales para manejar la información en sus sitios del Web. Por ejemplo, la mayoría de las máquinas de búsqueda usan este tipo de base de datos. Las bases de datos relacionales son ideales para el almacenamiento de grandes cantidades de información, la cual puede ser accedida por muchos usuarios.

Hoy en día, la mayoría de los gestores de bases de datos relacionales tienen soporte para la utilización de interfaces HTML. Para algunas aplicaciones, las páginas HTML favorecen al interfaz, pero, en aplicaciones más complejas se presentan ciertas limitaciones que no permiten generar un buen trabajo. En estos casos, es conveniente la utilización de lenguajes de programación como JAVA, que permitan elaborar aplicaciones para generar el interfaz con la base de datos.

La verdad es que todo lo que se pueda hacer en C++ se puede hacer con JAVA. Y mejor aún, al combinar JAVA con JDBC, se presentan nuevas espectativas para comunicarse con las bases de datos a través de un esquema similar al de las aplicaciones en C y C++. Muchos usuarios siguen confundidos en cuanto a la naturaleza de JAVA y piensan que es solo útil para animaciones y applets sencillos, para el Web.

Vendedores de productos comerciales para bases de datos como Oracle, IBM, Sybase, SAS y Borland han puesto su atención en la nueva metodología de integración JAVA-DBMS. Una parte de este interés es impulsado por la posibilidad de obtener aplicaciones con una mejor imagen. Pero en la mayoría de los casos, estas compañías lo ven como una nueva oportunidad para que los programadores puedan tomar ventaja de esta tecnología en un futuro próximo.

Antes que nada definiremos lo que es JDBC. “Es una API de JAVA para permitir ejecutar instrucciones SQL”(13 (Structured Query Language:Lenguaje estructurado de consultas), que es un lenguaje de alto nivel para crear, manipular, examinar y gestionar bases de datos relacionales

Podemos decir en tres frases lo que hace JDBC:

  • Establece una conexión con una BD, que puede ser remota o no.
  • Envía sentencias SQL a la BD.
  • Procesa los resultados obtenidos de la BD.

JDBC es un API incluido dentro del lenguaje Java para el acceso a bases de datos. Consiste en un conjunto de clases e interfaces escritos en Java que ofrecen un completo API para la programación de bases de datos, por lo tanto es la una solución

100% Java que permite el acceso a bases de datos, la primera aparición de JDBC (JDBC 1.0) se encuentra dentro del paquete java.sql que ha fue incorporado en la versión del JDK 1.1.x (Java Development Kit) correspondiente a la versión 1.1 del lenguaje Java, JDBC 2.0 sigue estando en el mismo paquete pero en las versiones JDK 1.2 y JDK 1.3 que se corresponden con la versión 2 del lenguaje Java, o también denominada plataforma Java 2 (Java 2 Platform). JDBC es un especificación formada por una colección de interfaces y clases abstractas, que deben implementar todos los fabricantes de drivers que quieran realizar una implementación de su driver 100% Java y compatible con JDBC (JDBC-compliant driver) Debido a que JDBC está escrito completamente en Java también posee la ventaja de ser independiente de la plataforma. No será necesario escribir un programa para cada tipo de base de datos, una misma aplicación escrita utilizando JDBC podrá manejar bases de datos Oracle, Sybase, o SQL Server. Además podrá ejecutarse en cualquier sistema que posea una Máquina Virtual de Java, es decir, serán aplicaciones completamente independientes de la plataforma.

1.1 Funciones

Básicamente el API JDBC hace posible la realización de las siguientes tareas:

  • Establecer una conexión con una base de datos.
  • Enviar sentencias SQL.
  • Manipular los datos.
  • Procesar los resultados de la ejecución de las sentencias.

1.2 Características

JDBC es independiente de la plataforma al estar escrito en Java. “JDBC es una API de bajo nivel ya que hace llamadas SQL directas”(14), Sun desea que JDBC pueda ser llamado desde otra API de más alto nivel que pueda simplificar la labor del programador, aunque la utilización de JDBC es sencilla y potente. Se tiene noticia de que ya existen diversos proyectos en marcha que intentan crear estas APIs de alto nivel. Aquí el término API hace referencia a un conjunto de clases e interfaces. Una forma de ver las características de JDBC es enfrentarlo con otro API que permita también el acceso a bases de datos, uno de los más usados y extendidos es el API de Microsoft ODBC (Open DataBase Connectivity).

ODBC permite la conexión a casi todo tipo de bases de datos en casi todas las plataformas, por lo tanto ¿porqué no podemos simplemente usar ODBC desde Java?. El hecho es que se puede utilizar ODBC desde Java, pero a través de JDBC con lo que se denomina el puente JDBC-ODBC (JDBC-ODBC Bridge, desarrollado por Sun e Intersolv), que se tratará más adelante. En este momento la pregunta se transforma en ¿para qué necesitamos entonces JDBC?, hay varias respuestas para esta pregunta:

1. Usar ODBC directamente desde Java no es apropiado ya que usa un interfaz en C, y las llamadas desde Java a código nativo de C pueden ocasionar diversos problemas de seguridad y en la portabilidad de las aplicaciones.

2. Una traducción literal del API de ODBC escrito en C no es adecuado, ya que,

Java no utiliza punteros y sin embargo ODBC hace un uso bastante frecuente de ellos. Se puede considerar que JDBC es una traducción de ODBC a un interfaz de programación orientada a objetos que es natural para los programadores de Java.

3. ODBC es más complicado de aprender, mezcla características sencillas con avanzadas y tiene opciones complejas incluso para las consultas más sencillas.

4. JDBC es necesario para disponer de una solución Java pura (100% pure Java). Cuando se utiliza ODBC el gestor de drivers y los drivers deben ser instalados manualmente en cada máquina cliente. Mientras que JDBC está escrito completamente en Java y su código se instala automáticamente.

1.3. Tipos de Drivers JDBC

  • “Los drivers nos permiten conectarnos con una base de datos determinada”(15). Existen cuatro tipos de drivers JDBC, cada tipo presenta una filosofía de trabajo diferente, a continuación se pasa a comentar cada uno de los drivers:

  • El puente JDBC-ODBC: Este driver conecta Java con el ODBC de Microsoft vía métodos nativos. Este driver fue desarrollado por JavaSoft, y forma parte del JDK para Windows.

Ventajas: Dada la gran popularidad de ODBC, casi todas las bases de datos cuentan actualmente con un driver ODBC. Por esta razón, la conectividad con Java se puede hacer inmediatamente sin hacer ningún desarrollo adicional. Desventas: El uso de métodos nativos implica que esta conectividad no se puede usar en applets. Además la conexión se vuelve más lenta por usar ODBC.

  • Un driver mixto Java – API Nativo: Este driver convierte las llamadas JDBC en llamados a métodos nátivos del cliente de la base de datos. Este driver típicamente es desarrollado por el mismo fabricante de la base de datos.

Ventajas: Casi todos los motores tienen un cliente ya probado y depurado, que hace que el desarrollo de estos driver pueda ser implementado fácilmente por todos los proveedores.

Desventajas: Tampoco se puede usar en applets debido al llamado a métodos nativos.

  • Un driver Gateway: Este driver traduce los llamados JDBC en un protocolo independiente del motor, que luego es traducido a en protocolo específico de la base de datos en un servidor intermedio. Este servidor (gateway) puede conectar los clientes Java con muchos proveedores de bases de datos diferentes usando un sólo driver en el cliente.

Ventajas: Esta es la alternativa más flexible para conectarse con diferentes motores de bases de datos simultáneamente. Además, como el driver está totalmente desarrollado en Java, puede funcionar en applets y aplicaciones.

Desventajas: El uso de una máquina intermedia hace necesariamente más lenta la transferencia de datos que usando drivers tipo 2 ó 4.

Nota: La versión Cliente/Servidor de JBuilder trae un driver de este tipo llamado “Borland DataGateway”, que brinda conexión nativa de muy alto desempeño con los siguientes motores de bases de datos: Oracle, InterBase, Sysbase, Informix, DB2, MS SQL, Access, FoxPro, dBase y Páradox. Este driver también soporta conexiones ODBC.

Un driver JDBC 100% Java Puro con Protocolo Nativo: Este driver convierte todas las llamadas JDBC a un protocolo de red específico al manejador de bases de datos. Esta es la solución ideal para casi todas las situaciones.

Ventajas: La eliminación de intermediarios, hace que el rendimiento accesando la base de datos sea óptimo. Al ser un driver sólo Java, puede funcionar tanto en applets como en aplicaciones.

Desventajas: Es el tipo de driver más difícil de implementar por los proveedores de bases de datos, porque involucra desarrollo en el cliente y en el servidor. Muchos proveedores no ofrecen aún esta forma de conectividad.

La forma más apropiada de accesar bases de datos en Java es vía JDBC. Para usarlo debemos conseguir un driver JDBC apropiado para el motor. Existen cuatro tipos de drivers JDBC. Los mejores son los tipos 3 (Gateway) y 4 (driver 100% Java con Protocolo Nativo).

1.4 Acceso de la API JDBC a las BD

La API JDBC soporta dos modelos distintos de acceso a las BD:

  • Modelo de dos capas.
  • Modelo de tres capas.

1.4.1Modelo de dos capas

“En este modelo la aplicación JAVA o el Applet, se conectan directamente con la BD”(16). Esto significa que el driver JDBC especifico para conectarse con la BD estara instalado en el sistema local.La BD puede estar en otra maquina y se accede a ella mediante red.Esta configuración tambien se llama Cliente/Servidor.El programa cliente envia instrucciones SQL a la BD, y esta las procesa y envia los resultados de vuelta al usuario.

1.4.2 Modelo de tres capas

En este modelo, las instrucciones son enviadas a una capa intermedia que se encarga de enviar las sentencias SQL a la BD.El manejador de BD procesa las sentencias y retorna los resultados a la capa intermedia que se encarga de enviarlos al usuario.

Volver >>


Escribe un comentario