web-dev-qa-db-fra.com

Qu'est-ce que le type 1,2,3 ou 4 d'un pilote JDBC?

Pour vous connecter à une base de données à l'aide de Java, la plupart d'entre nous utilisons l'API JDBC. 

Nous incluons normalement un pilote comme ojdbc14 (destiné à Java 1.4) dans le chemin de classe, et dans le programme, nous utilisons Class.forName pour l'utiliser. 

Contrairement à la plupart des autres fichiers JAR, les importations ne proviennent pas de ojdbc14, mais de Java.sql, qui se trouve dans rt.jar. Alors, quel type de pilote (1,2,3,4) est utilisé pour chacun d’eux? 

20
Ishan Bhatt

vous utilisez l'interface jdbc à partir des classes Java.sql, de sorte que le type de pilote n'aura aucun impact logique sur votre code, il aura uniquement un impact sur l'exécution/le déploiement.

Vous utilisez également le fichier ojdb14.jar d’Oracle, probablement avec une configuration jdbc "fine", ce qui signifie que vous utilisez une configuration de pilote de type 4. Avec une telle configuration, il vous suffira de déployer le fichier jar JDBC avec votre programme d'accès à la base de données.

Les autres options incluent un pont JDBC, ce qui signifie réellement une connexion ODBC enveloppée dans un vêtement JDBC. Cela signifie que vous devez configurer votre système pour la fonction ODBC correcte, puis utiliser un fichier JAR pour accéder à ODBC. En raison du "saut" supplémentaire de données via ODBC, on peut s’attendre à ce qu’il soit un peu plus lent qu’un accès de type 4; Cependant, il est possible que ODBC soit optimisé dans une telle mesure pour une situation particulière, que le saut supplémentaire soit négligeable. Comme pour la plupart des problèmes de performances, la vérité est découverte par des tests (dans votre environnement).

Les pilotes de type 2 utilisent à nouveau une API Java (JDBC); toutefois, ils relient les appels dans une bibliothèque partagée de style C ou C++, qui gère ensuite la connexion réelle. Si le pilote est optimisé pour être si rapide que le coût des appels d’installation/de démontage JNI est négligeable, il peut alors surpasser les performances des pilotes de type 4.

Les pilotes de type 3 utilisent essentiellement un proxy (ou un relais) la requête vers une autre ressource réseau. Cela entraîne généralement un succès supplémentaire sur le réseau, mais là encore, cela n’en dit pas long sur les performances réelles.

Les pilotes de type 4 sont ceux avec lesquels vous voulez probablement rester. Le programme Java se connecte directement à la base de données, ce qui signifie que s'il y a un problème, il sera entièrement capturé dans la machine virtuelle du programme établissant la connexion (type 1, il se trouve dans la couche ODBC), type 2 dans le code natif compilé, tapez 3 c'est dans le proxy réseau distant).

Encore une fois, rien de tout cela n’a à voir avec la fonctionnalité; Cependant, ils ont tous une incidence sur la manière de déployer, de déboguer et de configurer la connexion à la base de données.

17
Edwin Buck

Le "type" fait référence à la manière dont le pilote implémente l'API. Les quatre types sont:

Type 1: pilote de pont JDBC-ODBC (pont)

Type 2: pilote natif API/partiellement Java (natif)

Type 3: Pilote AllJava/Net-Protocol (Middleware)

Type 4: Tous les pilotes Java/protocole natif (Pure)

Ils auront différentes caractéristiques de performance. Voir ce lien pour un examen plus détaillé.

12
OldProgrammer
+------+---------------------------------+-------------------------------------------------------------------------------------------+
| Type |             Driver              |                                        Descripiton                                        |
+------+---------------------------------+-------------------------------------------------------------------------------------------+
|    1 | JDBC-ODBC Bridge (bridge)       | Translates all JDBC calls into ODBC calls.                                                |
|    2 | Native API (native)             | Translates all JDBC calls into native API database calls. (e.g: DLL on windows using JNI) |
|    3 | Network Protocol(middleware)    | Translates all JDBC calls into database independent middleware specific calls.            |
|    4 | Native Protocol(pure Java thin) | Translates all JDBC calls directly into database calls.                                   |
+------+---------------------------------+-------------------------------------------------------------------------------------------+
7
Premraj

ojdbc14.jar: fournit le pilote jdbc qui vous aidera à vous connecter à la base de données.

Java.sql.*: vous permet d'interroger les données dans la base de données et a besoin d'une connexion à une base de données pour effectuer les opérations d'aide au pilote.

Donc, ils ont des rôles différents à jouer et les deux sont nécessaires pour parler à la base de données.

En ce qui concerne les types de pilotes, ses différentes manières d’interagir avec la base de données, qui les classe mais a pour objectif ultime d’être identique, c’est-à-dire de se connecter à la base de données.

Les types de pilotes sont expliqués en détail ici: http://fr.wikipedia.org/wiki/JDBC_driver

4
Lokesh

En termes simples

Type1: (pilote de pont JDBC-ODBC)

-> il utilise ODBC 

-> convertit les appels JDBC en ODBC appels

-> ses inconvénients sont que vous devez installer ODBC ou vous pouvez dire que cela dépend de ODBC (fourni par Microsoft)

-> ses performances sont faibles car il convertit les appels JDBC en ODBC appels.

Type2 (API native)

-> utilise les bibliothèques côté client de la base de données

-> convertit les appels JDBC en appels natifs de la base de données Api

-> donne de meilleures performances que JDBC-ODBC (Type1) car cela ne dépend pas ou n'utilise pas ODBC

Type3 (protocole réseau)

-> il utilise Application Server (Middleware)

-> serveur convertit les appels jdbc en protocole de base de données spécifique au fournisseur

-> Le support réseau est requis côté client

-> La maintenance du pilote de protocole réseau devient coûteuse

Type4 (mince)

-> interagit différemment avec la base de données

-> ne nécessite aucune bibliothèque

-> écrit par les vendeurs de bases de données, il est donc préférable de les utiliser

0
Rajat Agrawal