JDBC Tracing

Introduzione

In questo breve articolo vediamo come sia possibile tracciare le operazioni che sono eseguite nell’ambito di una connessione JDBC a fini di debugging. Per una guida rapida introduttiva su concetti legati all’utilizzo delle API JDBC per la connessione ad una base dati potete consultare il post Accesso ai Database in Java con JDBC.

Tracciamento con Driver Manager

Un metodo rapido per rilevare le operazioni eseguite in conseguenza delle chiamate JDBC è quello di abilitarne il tracciamento (JDBC tracing). La specifica infatti prevede un meccanismo di tracciamento tale da riportare un dettaglio di tutte le attività che si verificano nel sistema legate alle operazioni JDBC. Le modalità di attivazione dipendono dall’oggetto utilizzato per la gestione della connessione.

Se si utilizza il DriverManager per stabilire la connessione al database, si può utilizzare il metodo DriverManager.setLogWriter per attivare l’analisi delle operazioni JDBC su file specifico. Il seguente codice mostra un esempio di utilizzo.

L’esecuzione del codice genera un file sql.log con il seguente contenuto:

Come si nota al testo inserito da noi attraverso il metodo println() della classe DriverManager sono presenti informazioni generate dal sistema, come ad esempio la richiesta di connessione ed il recupero del driver oracle.jdbc.OracleDriver.

Metodi Alternativi

Come detto esistono altri metodi utili per abilitare il tracing delle operazioni JDBC in funzione delle tecniche di gestione delle connessioni:

  1. Se si utilizza un oggetto DataSource per connettersi ad una origine dati il metodo  è DataSource.setLogWriter;
  2. Per connessioni pooled, si utilizza il metodo ConnectionPoolDataSource.setLogWriter;
  3. Per connessioni che possono partecipare a transazioni distribuite, si utilizza il metodo XADataSource.setLogWriter.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!