JDBC Frente a ODBC y Otros API

5
JDBC frente a ODBC y otros API’s JDBC difiere de ODBC (conectividad abierta a bases de datos), que es el API de Microsoft muy utilizada para acceder a bases de datos de diferentes proveedores desde múltiples plataformas y por ello es probablemente el API más extendido para el acceso a bases de datos relacionales. Principales Diferencias ODBC está escrito en C. El gestor de drivers ODBC y el propio driver han de ser instalados en todos los ordenadores JDBC está escrito en Java y permite obtener aplicaciones completas en Java (100% pure java) usando ODBC en BD grandes, el rendimiento puede disminuir al convertir llamadas Java a C y viceversa Ventajas de usar ODBC en vez de JDBC Ofrece la posibilidad de conectar a la mayoría de las bases de datos en casi todas las plataformas. Inclusive se puede usar ODBC para conectar bases de datos desde Java. Por ser probablemente el API más extendido para el acceso a bases de datos relacionales, por comodidad muchos prefieren optar por su uso. ¿Porque es preferible usar el puente JDBC-ODBC? Si se está manejando base de datos desde java la mejor opción para conectarse a esos datos y administrarlos es empleado un puente JDBC-ODBC por las siguientes razones:

Transcript of JDBC Frente a ODBC y Otros API

Page 1: JDBC Frente a ODBC y Otros API

JDBC frente a ODBC y otros API’s

JDBC difiere de ODBC (conectividad abierta a bases de datos), que es el API de Microsoft muy utilizada para acceder a bases de datos de diferentes proveedores desde múltiples plataformas y

por ello es probablemente el API más extendido para el acceso a bases de datos relacionales.

Principales Diferencias

ODBC está escrito en C. El gestor de drivers ODBC y el propio driver han de ser instalados en todos los

ordenadores JDBC está escrito en Java y permite obtener aplicaciones completas en Java (100% pure

java) usando ODBC en BD grandes, el rendimiento puede disminuir al convertir llamadas Java a

C y viceversa

Ventajas de usar ODBC en vez de JDBC

Ofrece la posibilidad de conectar a la mayoría de las bases de datos en casi todas las plataformas.

Inclusive se puede usar ODBC para conectar bases de datos desde Java.

Por ser probablemente el API más extendido para el acceso a bases de datos relacionales, por comodidad muchos prefieren optar por su uso.

¿Porque es preferible usar el puente JDBC-ODBC?

Si se está manejando base de datos desde java la mejor opción para conectarse a esos datos y administrarlos es empleado un puente JDBC-ODBC por las siguientes razones:

ODBC no es apropiado para su uso directo con Java porque usa una interface C. Las llamadas desde Java a código nativo C tienen un número de inconvenientes en la seguridad, la implementación, la robustez y en la portabilidad automática de las aplicaciones.

ODBC es una interfaz definida en C, mientras que JDBC es una interfaz definida en JAVA. Por ello ODBC es una API basada en procedimientos que hace un uso intensivo de punteros, mientras que JDBC es una interfaz orientada al objeto. Es decir, mientras en ODBC se trabaja con manejadores (handlers) y llamadas a la API, en JDBC se trabaja con objetos (o clases), interfaces y métodos.

Page 2: JDBC Frente a ODBC y Otros API

ODBC es difícil de aprender. Mezcla características simples y avanzadas juntas, y sus opciones son complejas para ‘querys’ simples. JDBC por otro lado, ha sido diseñado para mantener las cosas sencillas mientras que permite las características avanzadas cuando éstas son necesarias.

Un API Java como JDBC es necesario para permitir una solución Java “pura”. Cuando se usa ODBC, el gestor de drivers de ODBC y los drivers deben instalarse manualmente en cada máquina cliente. Como el driver JDBC está completamente escrito en Java, el código JDBC es automáticamente instalable, portable y seguro en todas las plataformas Java.

JDBC puede utilizar cualquier SGBD del mercado sin limitaciones. ODBC define una serie de funciones que se dividen en tres niveles de conformidad, cada uno de los cuales incluye un grupo de estas. El problema es que no todos los drivers existentes cumplen por igual estos niveles, y por tanto las aplicaciones han de tener en cuenta el nivel de conformidad del driver con el que están trabajando para saber que funciones pueden utilizar. Por el contrario, todo driver JDBC ha de pasar una serie de tests para confirmar que cumple con el ANSI SQL92 Entry Level, que define el mínimo común denominador entre cualquier SGDB SQL del mercado. Esto quiere decir que debe implementar todas las clases e interfaces abstractas que define el paquete java.sql, lo cual nos garantiza que cualquier aplicación que escribamos utilizando JDBC podrá trabajar con cualquier SGBD del mercado sin limitaciones.

ODBC utiliza drivers nativos. Los drivers ODBC han de trabajar junto con los drivers nativos del sistema gestor de base de datos, mientras que JDBC no.

Page 3: JDBC Frente a ODBC y Otros API

En resumen, el API JDBC es el interface natural de Java para las abstracciones y conceptos básicos de SQL. JDBC retiene las características básicas de diseño de ODBC; de hecho, ambos interfaces están basados en el X/Open SQL CLI (Call Level Interface).

Más recientemente, Microsoft ha introducido nuevas API detrás de ODBC. RDO, ADO y OLE DB. Estos diseños se mueven en la misma dirección que JDBC en muchas maneras, puesto que se les da una orientación a objeto basándose en clases que se implementan sobre ODBC.

Características de JDBC frente a otras API’s

SUN decidió seguir una serie de normas a seguir para la definición del interfaz del JDBC, y que han condicionado en gran manera el resultado final. Algunas de estas características son:

API A NIVEL SQL. JDBC es un API de bajo nivel, es decir, que está orientado a permitir ejecutar comandos SQL directamente, y procesar los resultados obtenidos. Esto supone que será tarea del programador crear APIs de más alto nivel apoyándose directamente sobre JDBC.

COMPATIBLE CON SQL. Cada motor de Base de Datos implementa una amplia variedad de comandos SQL, y muchos de ellos no tienen porque ser compatibles con el resto de motores de Base de Datos. JDBC, para solventar este problema de incompatibilidad, ha tomado la siguiente posición

o JDBC permite que cualquier comando SQL pueda ser pasado al driver directamente, con lo que una aplicación Java puede hacer uso de toda la funcionalidad que provea el motor de Base de Datos, con el riesgo de que esto pueda producir errores o no en función del motor de Base de Datos.

o Con el objetivo de conseguir que un driver sea compatible con SQL (SQL compliant), se obliga a que al menos, el driver cumpla el Estándar ANSI SQL 92.

JDBC debe ser utilizable sobre cualquier otro API de acceso a Bases de Datos , o más en particular ODBC (Open Database Connectivity)

JDBC debe proveer un interfaz homogéneo al resto de APIs de Java.

JDBC debe ser un API simple, y desde ahí, ir creciendo.

JDBC debe mantener los casos comunes de acceso a Base de Datos lo más sencillo posible:

o Mantener la sencillez en los casos más comunes (SELECT, INSERT, DELETE y UPDATE)

Page 4: JDBC Frente a ODBC y Otros API

o Hacer realizables los casos menos comunes: Invocación de procedimientos almacenados.

Crear múltiples métodos para múltiple funcionalidad. JDBC ha preferido incluir gran cantidad de métodos, en lugar de hacer métodos complejos con gran cantidad de parámetros.