Articulo de referencia

Controlador JDBC

Un controlador JDBC es un componente de software que permite que una aplicación Java interactúe con una base de datos . [ 1 ] Los controladores JDBC son análogos a los controlad...

Un controlador JDBC es un componente de software que permite que una aplicación Java interactúe con una base de datos . [ 1 ] Los controladores JDBC son análogos a los controladores ODBC , los proveedores de datos ADO.NET y los proveedores OLE DB .

Para conectarse con bases de datos individuales, JDBC (la API de conectividad de bases de datos Java ) requiere controladores para cada base de datos. El controlador JDBC establece la conexión con la base de datos e implementa el protocolo para transferir la consulta y el resultado entre el cliente y la base de datos.

Los controladores de tecnología JDBC se ajustan a una de cuatro categorías. [ 2 ]

  1. Puente JDBC-ODBC
  2. Controlador de API nativa
  3. Controlador de protocolo de red ( controlador de middleware )
  4. Controlador de protocolo de base de datos (controlador Java puro) o controlador ligero.

Controlador tipo 1 – puente JDBC-ODBC

Esquema del puente JDBC-ODBC

El controlador JDBC tipo 1, también conocido como puente JDBC-ODBC , es una implementación de controlador de base de datos que utiliza el controlador ODBC para conectarse a la base de datos. El controlador convierte las llamadas a métodos JDBC en llamadas a funciones ODBC.

El controlador depende de la plataforma, ya que utiliza ODBC, que a su vez depende de las bibliotecas nativas del sistema operativo subyacente en el que se ejecuta la JVM . Además, el uso de este controlador conlleva otras dependencias de instalación; por ejemplo, ODBC debe estar instalado en el equipo que contiene el controlador y la base de datos debe ser compatible con un controlador ODBC. Se desaconseja el uso de este controlador si se dispone de un controlador Java puro. Otra implicación es que cualquier aplicación que utilice un controlador de tipo 1 no es portable debido a la vinculación entre el controlador y la plataforma. Esta tecnología no es adecuada para entornos con un alto volumen de transacciones. Los controladores de tipo 1 tampoco son compatibles con el conjunto completo de comandos de Java y están limitados por la funcionalidad del controlador ODBC.

Sun (ahora Oracle) proporcionó un controlador puente JDBC-ODBC: sun.jdbc.odbc.JdbcOdbcDriver. Este controlador es código nativo y no Java, y es de código cerrado. El puente JDBC-ODBC de Sun/Oracle se eliminó en Java 8 (hay otros proveedores disponibles). [ 3 ] [ 4 ] [ 5 ] [ 6 ]

Si un controlador se ha escrito de forma que al cargarlo se cree una instancia y también se llame DriverManager.registerDrivera una función con esa instancia como parámetro, entonces está en la lista de controladores del DriverManager y disponible para crear una conexión.

En ocasiones, puede ocurrir que más de un controlador JDBC sea capaz de conectarse a una URL determinada . Por ejemplo, al conectarse a una base de datos remota, podría ser posible utilizar un controlador puente JDBC-ODBC, un controlador JDBC a protocolo de red genérico o un controlador proporcionado por el proveedor de la base de datos. En estos casos, el orden en que se prueban los controladores es importante, ya que DriverManager utilizará el primer controlador que encuentre que pueda conectarse correctamente a la URL especificada.

Primero, DriverManager intenta usar cada controlador en el orden en que se registró. (Los controladores que aparecen en jdbc.drivers siempre se registran primero). Omitirá cualquier controlador que sea código no confiable, a menos que se haya cargado desde la misma fuente que el código que intenta abrir la conexión.

Prueba los controladores llamando al método Driver.connect en cada uno de ellos, pasándoles la URL que el usuario proporcionó originalmente DriverManager.getConnection. El primer controlador que reconoce la URL establece la conexión.

Ventajas

  • Se puede acceder a casi cualquier base de datos para la que esté instalado un controlador ODBC, y se pueden recuperar los datos.

Desventajas

  • Sobrecarga de rendimiento, ya que las llamadas tienen que pasar por el puente JDBC (conectividad de base de datos Java) al controlador ODBC (conectividad de base de datos abierta) y luego a la interfaz de conectividad de base de datos nativa (por lo que puede ser más lento que otros tipos de controladores).
  • Es necesario instalar el controlador ODBC en el equipo cliente.
  • No es adecuado para applets , ya que el controlador ODBC debe estar instalado en el cliente.
  • Los controladores ODBC específicos no siempre están disponibles en todas las plataformas; por lo tanto, la portabilidad de este controlador es limitada.
  • No es compatible con JDK 1.8 (Java 8).

Controlador de tipo 2: controlador de API nativa

Esquema del controlador de la API nativa

El controlador JDBC de tipo 2, también conocido como controlador de API nativa , es una implementación de controlador de base de datos que utiliza las bibliotecas del lado del cliente de la base de datos. El controlador convierte las llamadas a métodos JDBC en llamadas nativas de la API de la base de datos. Por ejemplo: el controlador Oracle OCI es un controlador de tipo 2.

Ventajas

  • Dado que no existe una implementación del puente JDBC-ODBC, puede ser considerablemente más rápido que un controlador de tipo 1.

Desventajas

  • La biblioteca cliente del proveedor debe estar instalada en la máquina cliente.
  • No todas las bases de datos tienen una biblioteca del lado del cliente.
  • Este controlador depende de la plataforma.
  • Este controlador es compatible con todas las aplicaciones Java, excepto los applets.

Controlador de tipo 3: controlador de protocolo de red (controlador de middleware)

Esquema del controlador del protocolo de red

El controlador JDBC tipo 3, también conocido como controlador Java puro para middleware de bases de datos, [ 7 ] es una implementación de controlador de base de datos que utiliza una capa intermedia entre el programa que realiza la llamada y la base de datos. La capa intermedia ( servidor de aplicaciones ) convierte las llamadas JDBC, directa o indirectamente, en un protocolo de base de datos específico del proveedor .

Esto difiere del controlador de tipo 4 en que la lógica de conversión de protocolo no reside en el cliente, sino en la capa intermedia. Al igual que los controladores de tipo 4, el controlador de tipo 3 está escrito completamente en Java.

El mismo controlador JDBC del lado del cliente puede utilizarse para varias bases de datos. Esto depende del número de bases de datos que admita el middleware. El controlador de tipo 3 es independiente de la plataforma , ya que el middleware se encarga de las diferencias entre plataformas. Además, el uso del middleware ofrece ventajas adicionales en cuanto a seguridad y acceso al firewall.

Funciones

  • Envía llamadas a la API JDBC a un servidor de red de nivel intermedio que las traduce al protocolo de red específico del sistema de gestión de bases de datos (DBMS). Posteriormente, las llamadas traducidas se envían a un DBMS determinado.
  • Sigue un enfoque de comunicación de tres niveles.
  • Puede conectarse a múltiples bases de datos; no depende de un proveedor específico.
  • El controlador del cliente JDBC, escrito en Java, se comunica con un servidor de red de middleware mediante un protocolo independiente de la base de datos, y luego este servidor de red traduce esta solicitud en comandos para esa base de datos.
  • Por lo tanto, la comunicación entre el controlador del cliente y el middleware es independiente de la base de datos.

Ventajas

  • Dado que la comunicación entre el cliente y el servidor de middleware es independiente de la base de datos, no es necesario instalar la biblioteca del proveedor de la base de datos en el cliente. No es necesario modificar el cliente para una nueva base de datos.
  • El servidor de middleware (que puede ser un servidor de aplicaciones J2EE completo) puede proporcionar servicios de middleware típicos como almacenamiento en caché (de conexiones, resultados de consultas, etc.), equilibrio de carga, registro y auditoría.
  • Un único controlador puede gestionar cualquier base de datos, siempre que el middleware lo admita.
  • Por ejemplo: Servidor IDA

Desventajas

  • Requiere que se realice codificación específica de la base de datos en la capa intermedia.
  • La capa de middleware añadida puede generar latencia adicional, pero normalmente se soluciona utilizando mejores servicios de middleware.

Controlador de tipo 4: controlador de protocolo de base de datos/controlador ligero (controlador Java puro)

Esquema del controlador de protocolo nativo

El controlador JDBC tipo 4, también conocido como controlador Java puro directo a la base de datos , es una implementación de controlador de base de datos que convierte las llamadas JDBC directamente en un protocolo de base de datos específico del proveedor .

Escritos completamente en Java , los controladores de tipo 4 son, por lo tanto, independientes de la plataforma . Se instalan dentro de la máquina virtual Java del cliente. Esto proporciona un mejor rendimiento que los controladores de tipo 1 y tipo 2, ya que no tienen la sobrecarga de convertir las llamadas en llamadas a la API de ODBC o de la base de datos. A diferencia de los controladores de tipo 3, no requieren software asociado para funcionar.

Dado que el protocolo de base de datos es específico del proveedor, el cliente JDBC requiere controladores separados, generalmente proporcionados por el proveedor, para conectarse a diferentes tipos de bases de datos.

Ventajas

  • Implementado íntegramente en Java para lograr independencia de plataforma.
  • Estos controladores no traducen las solicitudes a un formato intermedio (como ODBC).
  • La aplicación cliente se conecta directamente al servidor de la base de datos. No se utilizan capas de traducción ni de middleware , lo que mejora el rendimiento.
  • La JVM puede gestionar todos los aspectos de la conexión entre la aplicación y la base de datos; esto puede facilitar la depuración.

Desventajas

  • Los controladores son específicos de cada base de datos, ya que los diferentes proveedores de bases de datos utilizan protocolos de red muy diferentes (y generalmente propietarios).

Véase también

Referencias

  1. "Tecnologías Java SE - Base de datos"
  2. Descripción general de Sun JDBC
  3. Oracle. "Puente JDBC-ODBC" . Centro de ayuda de Oracle . Consultado el 27 de junio de 2015 .
  4. "La vida después de sun.jdbc.odbc.JdbcOdbcDriver" . Blog de tecnología de acceso universal a datos . OpenLink Software. 4 de junio de 2015. Consultado el 18 de noviembre de 2016. El puente JDBC a ODBC, tanto en su forma de tipo 1 como de tipo 3, ha estado disponible y se actualiza periódicamente desde su lanzamiento original para JDBC 1.
  5. "Conectores y controladores de puente SequeLink | Progress DataDirect" .
  6. "Soporte para ODBC en Java 8" .
  7. "Controlador Java puro para middleware de base de datos (Acerca de los adaptadores de base de datos)" .