JDBC E DRIVER JDBC

Sommario

  1. Cos’è il JDBC?
  2. Cosa offre JDBC agli sviluppatori?
  3. Cosa sono e quali sono i driver JDBC?
  4. Cos’è un DriverManager?
  5. Come può un’applicazione Java interagire con diversi RDBMS?
  6. Cosa contiene il package java.sql?
  7. Qual è il flusso seguito per interfacciarsi  ad un DB tramite JDBC?
  8. Quali sono i principali compiti nella programmazione con il JDBC?
  9. Come viene risolto il nome di un database?
  10. Come possono passare una query ad un DBMS e come processo il risultato?
  11. Che tipi di statement esistono e a cosa servono?
  12. Quali sono le categorie di driver JDBC?
  13. Quali sono le caratteristiche principali del driver JDBC-ODBC Bridge?
  14. Quali sono le caratteristiche principali del driver Basato su Native API?
  15. Quali sono le caratteristiche principali del driver JDBC-Net?
  16. Quali sono le caratteristiche principali del driver Protocollo Nativo?
  17. Quali tipi di driver sono “database indipendent “ e quali specifici dei database?
  18. Tutti i tipi di driver stanno sul client?  
  19. Su cosa si basa la scelta del driver JDBC?
  20. Qual è una soluzione alternativa se non si trova il driver per un DB fornito dal Dbvendor o da terze parti?
  21. Sai elencare i fornitori di Gateway DB?

 

                  

Cos'è il JDBC ?

Il JDBC isola il  programmatore che sviluppa un’applicazione che interagisca con un database, da specifici database vendor. L’applicazione utilizza  i nomi delle interfacce e i metodi descritti nelle API JDBC, ignorando come vengano implementate nel driver e utilizzando le interfacce descritte nelle API come se fossero implementazioni delle classi.

 

Torna all'inizio

 

Cosa offre JDBC agli sviluppatori?

Consente allo sviluppatore di passare qualsiasi stringa direttamente al livello di driver.

 

Torna all'inizio

 

Cosa sono e quali sono i driver JDBC?

Un driver JDBC è una collezione di classi che implementano le interfacce di JDBC per connettersi ad un database. È necessario fornire la classe che implementa l’interface java.sql.Driver

 

Torna all'inizio

 

Cos’è un DriverManager?

Il DriverManager è una classe che appartiene al package java.sql che impiega la classe Driver quando necessita di collegarsi ad un particolare database, referenziato tramite URL.

Torna all'inizio

 

Come può un’applicazione Java interagire con diversi RDBMS?

Attraverso il drive manager.

Torna all'inizio

 

Cosa contiene il package java.sql?

Contiene 18 interfacce in JDBC. Le principali sono:

Driver

Connection

Statement

ResultSet

DriverManager

 Torna all'inizio

 

Qual è il flusso seguito per interfacciarsi  ad un DB tramite JDBC?

Il flusso descrive come consentire al programmatore di aprire una connessione ad uno specifico DB, eseguire statement SQL e elaborare il risultato ottenuto.

                                -una stringa URL viene passata come parametro al metodo getConnection della classe DriverManager, che si occupa di recuperare l’opportuno Driver.

                                -Il Driver apre una connessione al database, ovvero si ottiene un oggetto di tipo Connection.

                                -Grazie alla Connection si ottiene uno Statement.

                                -Lo Statement viene eseguito grazie al metodo executeQuery che restituisce sempre un oggetto ResultSet; nel caso di un operazione di insert o update l’oggetto ResultSet non contiene dati.

 

Torna all'inizio

 

Quali sono i principali compiti nella programmazione con il JDBC?

I cinque principali compiti sono:

creare un istanza di un driver JDBC

specificare un database

aprire una connessione ad un database

inviare una query

ricevere un risultato e processarlo

Torna all'inizio

 

Come viene risolto il nome di un database?

Si specifica un URL  indicandone il tipo con la sintassi:

jdbc: subprotocol : parameters

 

Esempio di accesso di JDBC a mSQL:

String url = arg[0]; //passato da riga di comando

 

String url = “jdbc : msql : //” + serverName + “ : 4333/prodotti”;

 

Esempio utilizzando il bridge JDBC-ODBC :

jdbc : odbc : Object.prodotti

 

Torna all'inizio

 

Come possono passare una query ad un DBMS e come processo il risultato?

Il passaggio di una Query avviene

- creando l’object Statement utilizzando il metodo createStatement() su un oggetto Connection. Viene racchiuso in un blocco try-catch che lancia SQL exception si ha quando c’è un errore di accesso al database: es se si interrompe la connessione:

 

                                try {

                                               stmt = con.createStatement();

                                     } catch (SQLException exp) {

                                         System.out.println(exp.getMessage()) ;

                                     }

-inviare lo statement SQL al database

                                               ResultSet res = stmt.executeQuery(“ select * from prodotti order by DESCRIZIONE”);

si processa il risultato:

-accedendo alla tabelle dei risultati utilizzando l’object java.sql.ResultSet

-si utilizzano i metodi getxxx di un object ResultSet

 

Torna all'inizio

 

Che tipi di statement esistono e a cosa servono?

Vi sono due principali tipi di Statement.

-Prepared Statement.

L’oggetto di tipo PreparedStatement viene utilizzato quando  la stessa query SQL deve essere eseguita più volte.

La classe Prepared Statement estende la classe Statement aggiungendo la possibilità di dare un valore a parametri all’interno dello statement.

Es:

 

                public boolean prepStatement(Float ID, String DESCRIZIONE)

{

                                PreparedStatement ps = con. PreparedStatement(“ update Prodotti set                           DESCRIZIONE =? Where ID = ? );

                                ps.setFloat(1, ID);

                                ps.setsTRING(1, DESCRIZIONE);

                                int rowUpdate = ps.executeUpdate();

                                return (rowUpdate > 0 );

}

 

-Callable Statement.

Un Callable Statement consente l’esecuzione di non-SQL statement(es.store procedure) di essere eseguite.

Callable Statement estende PrepareStatement che fornisce metodi per settare i parametri di ingresso.

Per recuperare più risultati ho il metodo getMoreResults.

Es.

 

                String DESCRIZIONE = “mouse”;

                CallableStatement cs = con.prepareCall(“{call return_ID(?,?) }”)

 try {

                cs.setString(1, DESCRIZIONE);

                cs.registerOutParameter(2, java.sql.Type.REAL);

                cs.execute();

                float ID = cs.getFloat(2);

      } catch (SQLException exp) {

                                         System.out.println(“Query fallita!”) ;

                                               exp.printStackTrace();

                                     }

 

Torna all'inizio

 

Quali sono le categorie di driver JDBC?

• Tipo 1 - JDBC-ODBC Bridge

• Tipo 2 - Basato su Native API

• Tipo 3 - JDBC-Net

• Tipo 4 - Protocollo Nativo

 

Torna all'inizio

Quali sono le caratteristiche principali del driver JDBC-ODBC Bridge?

Il cliente deve acquistare il driver ODBC.

Fornito da Sun JavaSoft (utilizzato con il driver ODBC fornito da altri)

• Il Bridge è indipendente dal database.

Può accedere qualsiasi database che abbia il supporto ODBC (anche non-relational database).

• Il meno efficiente — si passa attraverso JDBC e ODBC.

• Richiede JDBC, JDBC-ODBC bridge, ODBC manager, e driver ODBC sul lato client.

• Richiede un diverso driver ODBC per ogni database.

Torna all'inizio

 

Quali sono le caratteristiche principali del driver Basato su Native API?

Parzialmente scritto in Java.

Fornito da  tipici database vendor

• Weblogic

• Driver è specifico del database.

• Driver converte JDBC a chiamate native proprietarie del database (ad esempio, Oracle CLI o Sybase Open Client).

• Buone performance.

• Richiede JDBC manager, JDBC driver, e librerie native del database sul client.

• Richiede un diverso driver nativo per ogni database.

Torna all'inizio

 

Quali sono le caratteristiche principali del driver JDBC-Net?

Java software.

Fornito da tipici database vendor

• Driver scritto in Java.

• Driver è database independent—tutti i driver utilizzano lo stesso protocollo dal client al server.

• JDBC manager, JDBC driver, e librerie native del database sul secondo livello (tier two).

• Scalabile— driver ottimale per architetture three-tier.

• Driver converte JDBC a chiamate native proprietarie del database (ad esempio, Oracle CLI o Sybase Open Client).

• Accesso a più back-end database utilizzando prodotti che fungono da database gateway.

Torna all'inizio

 

Quali sono le caratteristiche principali del driver Protocollo Nativo?

Java software.

Fornito da tipici database vendor

• Driver scritto in Java.

• Driver è specifico al database.

• Driver converte JDBC a chiamate native proprietarie del database.

• Buone performance.

• Richiede JDBC manager, driver e librerie native del database sul client.

 

Torna all'inizio

 

Quali tipi di driver sono “ database indipendent “ e quali specifici dei database?

Sono indipendenti dal database il JDBC-ODBC Bridge e JDBC-Net, mentre sono specifici del database il driver  Basato su Native API e Protocollo Nativo.

 

Torna all'inizio

 

Tutti i tipi di driver stanno sul client?

JDBC-ODBC Bridge, JDBC-Net  e Protocollo Nativo hanno JDBC driver e librerie del database sul client, mentre il driver basato su Native API ha JDBC sul client, librerie del database sul two tier.

 

Torna all'inizio

 

Su cosa si basa la scelta del driver JDBC?

• Valutare e controllare le caratteristiche del database

• Determinare se il fornitore di database management system (DBMS) fornisce un driver JDBC

• Determinare il tipo di driver fornito/i

• Tipo 1 ha basse performance dovute all’overhead di traduzione.

• Tipo 2 converte chiamate JDBC in chiamate native del database (Oracle’s SQL*Net, INFORMIX I-Connect o Sybase OpenClient, ecc.) che sono inviate sulla rete al database server.

• Tipo 3 converte chiamate JDBC in un database-independent formato di rete che è iniviato sulla rete ad un application

server. L’application server converte le richieste in un protocollo specifico del database. Questo tipo di driver è la soluzione ottimale per una progettazione three-tier delle applicazioni. Possono insorgere problemi legati al protocollo di rete attreaverso i firewall.

• Tipo 4 converte chiamate JDBC in invocazioni di chiamate su protocollo nativo utilizzato dal database. Questo consente un’inovazione diretta tra il client (o application server) ed il database. Questo tipo di driver si dimostra una soluzione molto valida se l’azienda ha definito un fornitore di database come standard e il fornitore mette a disposizione un driver di tipo 4. Possono insorgere problemi legati al protocollo di rete attraverso i firewall.

Torna all'inizio

 

Qual è una soluzione alternativa se non si trova il driver per un DB fornito dal Dbvendor o da terze parti?

Se non trovate driver per il vostro database forniti dal DB vendor o da terze parti:

• Acquiste un database gateway che possieda un JDBC driver ed il mapping per il vostro database.

I Database gateway effettuano il mapping di database non-relazionali e di file a dati in forma relazionale. Questi prodotti consentono accesso concorrente a più file e database, offrendo un immagine di dati complessiva ( “joined data”) nella forma di una tabella relazionale.

Utilizzate un JDBC-ODBC bridge.

• Valutate modalità alternative di interfacciare la sorgente dei dati (object wrapper, codice nativo oppure API pubblicate come socket e IBM LU6.2).

• Valutate modalità alternative per memorizzare i dati (object database management systems [ODBMS]).

Torna all'inizio

 

Sai elencare i fornitori di Gateway DB?

Fornitori di Gateway DB sono:

• IBM

• Information Builders

• Sybase

• Intersolv

 

Torna all'inizio

 
autori Bertolini Marta & Girotto Cristiano.
Copyright © 2001  [FI3]. Tutti i diritti riservati.
Aggiornato il: 7/05/01 .