ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Eshop | Java | Tools | Web | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

JBUILDER JDBCL
Applicazioni data-oriented con Borland JBuilder e JBCL
Caratteristiche della JBCL
GUI con JBuilder
Dataset e Columns
Risoluzione delle query

<<< Caratteristiche della JBCL >>>

La JBCL si presenta come una libreria completa e abbastanza complessa. Le toolbar del Jbuilder presentano elementi provenienti da varie librerie, e solo due presentano elementi specifici della JBCL.





In Figura 1 possiamo vedere i componenti della toolbar Controls, che sono gli elementi di interfaccia utente della JBCL, mentre in Figura 2 abbiamo i componenti di Data Access.





Questi componenti sono entry point, grazie ai quali è possibile sfruttare molte delle funzionalità fornite dalla Jbuilder. Comunque c’è davvero molto “sotto il coperchio” che va oltre questi pochi componenti. Bisogna anche sfatare il mito che il Jbuilder sia un ambiente di sviluppo interamente visuale. In realtà è un vero two ways tool, ovvero uno strumento che consente di generare codice con l’editing visuale, ma soprattutto, è in grado di comprendere codice modificato manualmente e riportarlo nell’editor visuale. Tuttavia esistono varie operazioni (di cui vedremo qualche esempio) che non possono essere svolte visualmente ma richiedono una codifica manuale. In questi casi JBuilder non fornisce alcun indizio visivo dell’esistenza di certe funzionalità, e solo una conoscenza diretta della libreria può aiutare. Analogamente, ci sono casi in cui l’editore visuale si dimostra limitato, ed è molto più pratico e veloce editare manualmente il codice generato (che fortunatamente è molto comprensibile) che “lottare” con l’ambiente di sviluppo. Fortunatamente in questi casi le modifiche apportate saranno puntalmente riportate nell’editor visuale (purché si rispetti la struttura e lo “stile” che il Jbuilder usa per il codice che genera).



Vediamo dunque che cosa ci mette a disposizione la libreria di Borland. La JBCL innanzitutto fornisce i sospirati componenti data aware che permettono di collegare i componenti delle GUI ai dati. Per ogni componente della AWT standard, (per esempio TextField), esiste un corrispondente elemento della JBCL, con lo stesso nome ma col suffisso Control (quindi TextFieldControl) con funzionalità analoghe ma generalmente migliorate; soprattutto per molti Control esiste una proprietà dataset per collegarlo ad un dataset. La JBCL fornisce gli equivalenti dei componenti standard della AWT: ListControl, CheckBoxControl ecceera; inoltre abbiamo alcune aggiunte: il GridControl, una griglia molto sofisticata ed editabile, un NavigatorControl per navigare in un database, un TreeControl, una StatusBar, componenti per la gestione delle immagini, eccetera. I Control rappresentano la parte front end della JBCL, ma il vero cuore è rappresentato dai componenti di gestione dati, i DataSet. Si tratta di buffer di dati intelligenti, che consentono di gestire in modo ottimale l’interazione col database. I DataSet possono essere ordinati, filtrati, e possono essere frazionati per colonne (Columns) e per righe (Rows). Ci sono vari tipi di dataset, collegati a file o database via query o stored procedure. Volendo si possono creare viste supplementari su un dataset, con differenti proprietà di filtraggio e ordinamento, usando un componente DataSetView. Ci sono molte altre “feature” utili: per esempio sui campi di un dataset si possono impostare delle maschere di input e di output; è possibile creare dei campi calcolati e aggregati, e ancora si possono gestire relazioni Master Detail (uno a molti).

Borland chiama DataExpress la tecnologia della JBCL. L’idea di fondo è che quando un componente visuale deve operare su dei dati, li prende sempre da un DataSet, mai direttamente dal database. I dati estratti dal database infatti vengono caricati in un DataSet per l’editing, ed è su di essi che operano i Control, finchè non si decide di salvare le modifiche nel database. Ciò complica un po’ le cose, ma offre dei vantaggi: infatti questa architettura consente una maggiore astrazione dal database sottostante, garantendo quindi una compatibilità con un numero maggiore di database. Infatti, spesso i database sono molto diversi tra di loro per funzioni disponibili; per sfruttarli al meglio occorre utilizzare caratteristiche avanzatie, quali locking di record o cursori. Grazie ai DataSet, queste caratteristiche vengono sfruttate solo nell’interazione col database, come ottimizzazioni, e solo quando sono disponibili. In terminologia Borland l'azione di caricare i dati da un database si dice providing. Quando si termina di editare i dati si può salvare il risultato indietro nel database. Il termine utilizzato per indicare l’aggiornamento del database con le modifiche è resolving. In generale la JBCL tenta di svolgere questa operazione nella maniera più automatica. A volte però occorre intervenire per “aiutare” la risoluzione in caso di problemi che non sono gestibili in automatico dal DataSet. Per questa funzione si utilizzano appositi componenti presenti sulla palette standard, i resolver.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com