Un controlador JDBC es un componente de software que permite que una aplicación Java interactúe con una base de datos . [1] controladores JDBC son análogos a los controladores ODBC , los proveedores de datos ADO.NET , y proveedores OLE DB .
Para conectarse con bases de datos individuales, JDBC (la API de conectividad de bases de datos de Java ) requiere controladores para cada base de datos. El controlador JDBC proporciona la conexión a 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 encajan en una de cuatro categorías. [2]
- Puente JDBC-ODBC
- Controlador de API nativa
- Controlador de protocolo de red ( controlador de middleware )
- Controlador de protocolo de base de datos (controlador Java puro) o controlador ligero.
Controlador de tipo 1: 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 emplea el controlador ODBC para conectarse a la base de datos. El controlador convierte las llamadas al método 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 conduce a otras dependencias de instalación; por ejemplo, ODBC debe estar instalado en la computadora que tiene el controlador y la base de datos debe admitir un controlador ODBC. Se desaconseja el uso de este controlador si está disponible la alternativa de un controlador de Java puro. La otra implicación es que cualquier aplicación que utilice un controlador de tipo 1 no es portátil dada la vinculación entre el controlador y la plataforma. Esta tecnología no es adecuada para un entorno de transacciones elevadas. Los controladores de tipo 1 tampoco admiten el conjunto completo de comandos de Java y están limitados por la funcionalidad del controlador ODBC.
Sun (ahora Oracle) proporcionó un 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 manera que cargarlo hace que se cree una instancia y también llama DriverManager.registerDriver
con esa instancia como parámetro, entonces está en la lista de controladores del DriverManager y está disponible para crear una conexión.
A veces puede darse el caso de 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 determinada, es posible utilizar un controlador de puente JDBC-ODBC, un controlador de protocolo de red JDBC a genérico o un controlador proporcionado por el proveedor de la base de datos. En tales casos, el orden en el que se prueban los controladores es importante porque DriverManager utilizará el primer controlador que encuentre que pueda conectarse correctamente a la URL dada.
Primero, DriverManager intenta utilizar cada controlador en el orden en que fueron registrados. (Los controladores enumerados en jdbc.drivers siempre se registran primero). Omitirá los controladores que no sean de confianza a menos que se hayan 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 pasó originalmente al método DriverManager.getConnection
. El primer controlador que reconoce la URL realiza 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 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 tanto, puede ser más lento que otros tipos de controladores).
- El controlador ODBC debe instalarse en la máquina cliente.
- No apto para subprogramas , porque el controlador ODBC debe instalarse en el cliente.
- Los controladores ODBC específicos no siempre están disponibles en todas las plataformas; por 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
El controlador JDBC tipo 2, también conocido como controlador Native-API , 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 al método 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
- Como no hay implementación de puente JDBC-ODBC, puede ser considerablemente más rápido que un controlador de Tipo 1.
Desventajas
- La biblioteca cliente del proveedor debe instalarse 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 subprogramas.
Controlador de tipo 3: controlador de protocolo de red (controlador de middleware)
El controlador JDBC tipo 3, también conocido como controlador Pure Java para middleware de base de datos, [7] es una implementación de controlador de base de datos que hace uso de un nivel intermedio entre el programa de llamada y la base de datos. El nivel medio ( 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 el nivel medio. 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 se puede utilizar para varias bases de datos. Depende de la cantidad de bases de datos para las que se haya configurado el middleware. El controlador de tipo 3 es independiente de la plataforma, ya que el middleware se encarga de las diferencias relacionadas con la plataforma. Además, hacer uso del middleware proporciona ventajas adicionales de seguridad y acceso al cortafuegos.
Funciones
- Envía llamadas a la API de JDBC a un servidor de red de nivel medio que traduce las llamadas al protocolo de red específico de DBMS. Las llamadas traducidas se envían luego a un DBMS en particular.
- Sigue un enfoque de comunicación de tres niveles.
- Puede interactuar con varias bases de datos: no es específico del proveedor.
- El controlador del cliente JDBC escrito en Java, se comunica con un servidor de red de middleware utilizando un protocolo independiente de la base de datos, y luego este servidor de red traduce esta solicitud en comandos de base de datos para esa base de datos.
- Por lo tanto, el controlador del cliente para la comunicación del 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 necesaria la biblioteca del proveedor de la base de datos en el cliente. No es necesario cambiar el cliente por 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 solo controlador puede manejar cualquier base de datos, siempre que el middleware lo admita.
- Por ejemplo: servidor IDA
Desventajas
- Requiere que la codificación específica de la base de datos se realice en el nivel medio.
- La capa de middleware agregada puede resultar en una latencia adicional, pero generalmente se supera mediante el uso de mejores servicios de middleware.
Controlador de tipo 4: controlador de protocolo de base de datos / controlador delgado (controlador de Java puro)
El controlador JDBC tipo 4, también conocido como Direct to Database Pure Java Driver , 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 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 tiene la sobrecarga de conversión de llamadas en ODBC o llamadas de API de base de datos. A diferencia de los controladores de tipo 3, no necesita software asociado para funcionar.
Como el protocolo de la base de datos es específico del proveedor, el cliente JDBC requiere controladores separados, generalmente suministrados por el proveedor, para conectarse a diferentes tipos de bases de datos.
Ventajas
- Completamente implementado en Java para lograr la independencia de la 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 o middleware , lo que mejora el rendimiento.
- La JVM puede gestionar todos los aspectos de la conexión de la aplicación a la base de datos; esto puede facilitar la depuración.
Desventajas
- Los controladores son específicos de la base de datos, ya que los diferentes proveedores de bases de datos utilizan protocolos de red muy diferentes (y generalmente propietarios).
Lista de controladores JDBC
Ver también
- ADO.NET
- OLE DB
- Conectividad de base de datos abierta (ODBC)
- XQJ (API XQuery para Java)
Referencias
- ^ "Tecnologías Java SE - Base de datos"
- ^ Descripción general de Sun JDBC
- ^ Oracle. "Puente JDBC-ODBC" . Centro de ayuda de Oracle . Consultado el 27 de junio de 2015 .
- ^ "La vida después de sun.jdbc.odbc.JdbcOdbcDriver" . Blog de tecnología de acceso universal a datos . Software OpenLink. 2015-06-04 . Consultado el 18 de noviembre de 2016 .
JDBC-to-ODBC Bridge, tanto en formato Tipo 1 como Tipo 3, ha estado disponible y actualizado regularmente desde su lanzamiento original para JDBC 1.
- ^ "Conectores y controladores de puente SequeLink | Progress DataDirect" .
- ^ "Soporte de Java 8 ODBC" .
- ^ "Controlador Java puro para middleware de base de datos (Acerca de los adaptadores de base de datos)" .
- ^ "Software | xerial.org" . xerial.org . Consultado el 25 de agosto de 2020 .