JDBC - Tipi di driver
Cos'è il driver JDBC?
I driver JDBC implementano le interfacce definite nell'API JDBC, per interagire con il server del database.
Ad esempio, l'utilizzo dei driver JDBC consente di aprire le connessioni al database e di interagire con esso inviando comandi SQL o database e quindi ricevendo i risultati con Java.
Il pacchetto Java.sql fornito con JDK, contiene varie classi con i loro comportamenti definiti e le loro effettive implementazioni vengono eseguite in driver di terze parti. I fornitori di terze parti implementano l' interfaccia java.sql.Driver nel driver del database.
Tipi di driver JDBC
Le implementazioni del driver JDBC variano a causa dell'ampia varietà di sistemi operativi e piattaforme hardware in cui opera Java. Sun ha suddiviso i tipi di implementazione in quattro categorie, Tipi 1, 2, 3 e 4, come spiegato di seguito:
Tipo 1: JDBC-ODBC Bridge Driver
In un driver di tipo 1, viene utilizzato un bridge JDBC per accedere ai driver ODBC installati su ogni macchina client. Utilizzando ODBC, è necessario configurare sul sistema un DSN (Data Source Name) che rappresenta il database di destinazione.
Quando Java è uscito per la prima volta, questo era un driver utile perché la maggior parte dei database supportava solo l'accesso ODBC, ma ora questo tipo di driver è consigliato solo per uso sperimentale o quando non sono disponibili altre alternative.
Il bridge JDBC-ODBC fornito con JDK 1.2 è un buon esempio di questo tipo di driver.
Tipo 2: API nativa JDBC
In un driver di tipo 2, le chiamate API JDBC vengono convertite in chiamate API C / C ++ native, che sono univoche per il database. Questi driver vengono generalmente forniti dai fornitori di database e utilizzati allo stesso modo del bridge JDBC-ODBC. Il driver specifico del fornitore deve essere installato su ogni macchina client.
Se cambiamo il database, dobbiamo cambiare l'API nativa, poiché è specifica per un database e ora sono per lo più obsolete, ma potresti realizzare un aumento di velocità con un driver di tipo 2, perché elimina l'overhead di ODBC.
Il driver Oracle Call Interface (OCI) è un esempio di driver di tipo 2.
Tipo 3: JDBC-Net Java puro
In un driver di tipo 3, viene utilizzato un approccio a tre livelli per accedere ai database. I client JDBC utilizzano socket di rete standard per comunicare con un server delle applicazioni middleware. Le informazioni sul socket vengono quindi tradotte dal server delle applicazioni middleware nel formato di chiamata richiesto dal DBMS e inoltrate al server del database.
Questo tipo di driver è estremamente flessibile, poiché non richiede alcun codice installato sul client e un singolo driver può effettivamente fornire l'accesso a più database.
È possibile pensare al server delle applicazioni come a un "proxy" JDBC, nel senso che effettua chiamate per l'applicazione client. Di conseguenza, è necessaria una certa conoscenza della configurazione del server delle applicazioni per utilizzare efficacemente questo tipo di driver.
Il server delle applicazioni potrebbe utilizzare un driver di tipo 1, 2 o 4 per comunicare con il database, la comprensione delle sfumature si rivelerà utile.
Tipo 4: Java puro al 100%
In un driver di tipo 4, un driver puro basato su Java comunica direttamente con il database del fornitore tramite connessione socket. Questo è il driver con le prestazioni più elevate disponibile per il database ed è solitamente fornito dal fornitore stesso.
Questo tipo di driver è estremamente flessibile, non è necessario installare software speciale sul client o sul server. Inoltre, questi driver possono essere scaricati dinamicamente.
Il driver Connettore / J di MySQL è un driver di tipo 4. A causa della natura proprietaria dei loro protocolli di rete, i fornitori di database di solito forniscono driver di tipo 4.
Quale driver dovrebbe essere usato?
Se stai accedendo a un tipo di database, come Oracle, Sybase o IBM, il tipo di driver preferito è 4.
Se l'applicazione Java accede a più tipi di database contemporaneamente, il tipo 3 è il driver preferito.
I driver di tipo 2 sono utili nelle situazioni in cui un driver di tipo 3 o di tipo 4 non è ancora disponibile per il database.
Il driver di tipo 1 non è considerato un driver a livello di distribuzione e in genere viene utilizzato solo per scopi di sviluppo e test.