economia news e media viaggi informatica internet salute e benessere int rattenimento e spettacolo sport tempo libero istruzio ne e formazione arte cultura scienza

Database e Java

Lo standard SQLJ (prima parte)

A cura di Andrea Silvestri

Pubblicato il 30/06/2001

Introduzione ai concetti base di SQLJ, lo standard che consente di includere istruzioni SQL all'interno del codice java.

SQLJ e' uno standard, nato per inserire istruzioni sql direttamente all'interno di codice java, riducendo la quantita' di codice necessario all'esecuzione delle istruzioni sql; nato dalla collaborazione dei maggiori produttori di database mondiali (Compaq, IBM, Informix, Oracle, Sybase e Sun).
Si tratta di istruzioni statiche, cioe' definite in fase di scrittura del codice, che quindi non possono mutare in fase di esecuzione.
Per quest'ultime si continua ad utilizzare jdbc, che puo' tranquillamente coesistere con SQLJ.
SQLJ e' composto da un traduttore (una sorta di precompilatore) e da una libreria di runtime. Scopo del traduttore e' quello di andare a convertire le istruzioni sql in istruzioni java che vengono passate al runtime che si occupa dell'esecuzione del codice, normalmente attraverso l'uso di driver jdbc.
Piu' in dettaglio il traduttore si occupa di verificare la correttezza sintattica delle istruzioni, quella semantica andando a verificare l'esistenza di oggetti come le tabelle, accedendo quindi al database e della consistenza fra i tipi di dati definiti nel codice java e quelli restituiti dalle istruzioni sql.
Infine trasforma il codice sqlj in codice java contenente chiamate jdbc.
I vantaggi principali derivanti dall'utilizzo di sqlj piuttosto che jdbc sono:

  • Maggiore semplicita': dovuta all'interfaccia ad alto livello, che consente di scrivere direttamente istruzioni sql, ottenendo codice piu' compatto e quindi con minore probabilita' di introdurre errori.
  • Verifica della sintassi e della semantica in fase di compilazione piuttosto che a runtime.
  • Maggior controllo sui tipi.
  • Portabilita' del codice.
Le istruzioni sqlj devono essere salvate in un file con estensione .sqlj
Questo file viene convertito, dal traduttore, in un file .java, contenente le chiamate jdbc ed infine passato al compilatore java che crea il file .class contenente il bytecode. Infine il runtime si occupa di generare le opportune chiamate al driver jdbc.
Esiste anche la possibilita' di utilizzare un componente detto customizer, subito dopo aver compilato il codice java, che permette di introdurre delle ottimizzazioni legate ad un particolare database (perdendo pero' cosi' la portabilita' del codice).
Le istruzioni sqlj sono riconoscibili all'interno del codice java in qunato iniziano con la clausola #sql e possono essere di tipo dichiarativo quando definiscono oggetti come gli iteratori o esecutive quando contengono istruzioni sql (in questo caso si utilizzano le parentesi graffe).
Concludiamo con un esempio, scrivendo alcune istruzioni sql.
Supponiamo ad esempio di voler modificare la tabella impiegati, andando a modificare il salario di un dipendente, leggendone la matricola da una variabile java (matric):

#sqlj {
UPDATE impiegati
SET salario = 6000000
WHERE matricola = :matric
};

Questo codice, inserito in una classe java, andra' a modificare un record della tabella impiegati in base al valore della variabile matric (che va scritta preceduta da ':').
Allo stesso modo e' possibile andare a leggere un record memorizzandone i valori in alcune variabili:

String nome,cogn;
int sede;
int matric := 1;

#sqlj {
SELECT nome,cognome,sede
INTO :nome, :cogn, :sede
FROM impiegati
WHERE matricola = :matric
};

Per ora e' tutto, nel prossimo intervento andremo a vedere come creare una connessione al database cui faranno riferimento le istruzioni sql.

I link correlati all'argomento

Vuoi essere aggiornato sulle novità della guida?

Feed RSS XML vostro feed RSS