






















































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
informatica dispense programmazione
Tipologia: Dispense
1 / 62
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!























































1
Tecnologie Web T Accesso Diretto alle Basi di Dati: Interfacce e Astrazioni
Home Page del corso: http://www-db.deis.unibo.it/courses/TW/ Versione elettronica: 4.01.AccessoDB.pdf Versione elettronica: 4.01.AccessoDB-2p.pdf
Accesso DB
… un piccolo passo indietro
Services
Business Logic
Business Flows
Presentation
I servizi devono fornire tutte le funzionalità base (API) necessarie per l’implementazione rapida ed efficace della logica di business, dalla gestione della concorrenza al supporto alle transazioni, dall’interfacciamento ai DB al monitoraggio/controllo/gestione delle performance
La logica di business contiene le caratteristiche delle applicazioni e dipende sia dal modello dei dati che, ancora più rilevante, dalle logiche di utilizzo degli stessi
A questo livello vengono implementati i flussi delle diverse conversazioni che interagiscono per comporre una applicazione
Livello di presentazione si occupa della visualizzazione dei risultati generati secondo il percorso definito nel flusso sottostante
Accesso DB
Modello frequente in applicazioni enterprise
… ancora un piccolo passo indietro
istruzioni SQL eseguite “ interattivamente ”
Accesso DB
Accesso diretto alle basi di dati (1/2)
È anche possibile (ed è di gran lunga l’accesso a DB più tipico) inserire istruzioni SQL direttamente nel codice di un’applicazione scritta in un linguaggio di programmazione “ospite” (ad es. C, C++, Java, C#) Esempio Java - JDBC:
System.out.println("Retrieve some data from the database.."); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM EMPLOYEE"); // display the result set while (rs.next()) { String number = rs.getString(1); String name = rs.getString(2); System.out.print(" empno= " + number); System.out.print(" firstname= " + name); System.out.print("\n"); } rs.close(); stmt.close();
Accesso DB
SQL Embedded
nel programma sorgente le istruzioni SQL distinguendole dalle normali istruzioni tramite un opportuno separatore Lo standard SQL prevede che il codice SQL sia preceduto dalla stringa exec sql e termini con il carattere ';’ Preprocessore che espande i comandi SQL Cursori: strumento che permette a un programma di accedere alle righe di una tabella una alla volta; viene definito su una generica interrogazione SQL dinamico : permette all’applicazione di definire al momento dell’esecuzione le interrogazioni SQL da effettuare sulla base di dati Valore dei parametri (per istruzioni con struttura predefinita) Forma delle interrogazioni Accesso DB
Call Level Interface
Mette direttamente a disposizione del programmatore
con un DBMS
anche se occorre gestire esplicitamente aspetti che con SQL Embedded sono demandati direttamente al preprocessore
Accesso DB
Soluzioni CLI
Piattaforma software Microsoft ODBC (Object DataBase Connectivity ): interfaccia standard che permette di accedere a DB in qualunque contesto, realizzando interoperabilità con diverse combinazioniDBMS- Piattaforma-Reti OLE DB (Object Linking and Embedding for DataBases): soluzione proprietaria Microsoft che permette ad applicazioni Windows di accedere a sorgenti dati generiche, non solo relazionali ma anche a una vasta tipologia di archivi dati, quali caselle di posta elettronica; basata sul modello a oggetti COM ADO(ActiveX Data Object): interfaccia proprietaria Microsoft di alto livello ai sevizi offerti da OLE DB basata su una interfaccia “record(tupla) - oriented”
JDBC
Soluzione per l’accesso ai dati in Java sviluppata da Sun Microsystem; controparte di ODBC per Java
Accesso DB
11
Diverse soluzioni a confronto
Nome Descrizione Pro :) Contro :( SQL Embedded
Le istruzione SQL sono introdotte direttamente all’interno del listato programma, distinte da un separatore (exec sql
Cursori per gestire risultati composti da più tuple; SQL dinamico per ottenere flessibilità
Necessità di un preprocessore e di unsupporto “DBMS-piattaforma- linguaggio-compilatore”
OLE DB/ ADO
Soluzione proprietaria Microsoft che consente, grazie all’uso di driver specifici, di interfacciare il linguaggio di programmazionecon il DBMS
Integrato in Windows; Driver offerti dai maggioriproduttori di DBMS; Interfacciamento con altri tipi di dato (documenti,mailbox, ecc.)
Dialetto SQL ristretto; Proprietario; Utilizzato solo su linguag-gi e su piattaforme Microsoft
JDBC Interfaccia fra il mondo Java ed idiversi DBMS. Utilizza dei driver specifici ma offre anche un ponte con ODBC (non è vero l’inverso)
Java, multipiattaforma,codice aperto; Disponibile per qualsiasiDBMS grazie anche al ponte ODBC
Come ODBC richiede ladisponibilità di un driver offerto dal DBMS
Accesso DB
Architettura ODBC
Application
ODBC Driver Manager
ODBC Driver (DBMS/OS/network)
Data Source
Accesso DB
API Java standard definita da Sun Microsystems nel 1996 Sun assicura che JDBC NON è acronimo di Java Database Connectivity … ma è un semplice marchio registrato!! Rappresenta la controparte Java di ODBC
implementano metodi definiti dalle specifiche JDBC Le classi Java che realizzano funzionalità JDBC sono contenute nei package java.sql : classi fondamentali javax.sql : estensioni Accesso DB
Storia di JDBC
Prima distribuzione (jdbc.sql)
JDBC fa parte del pacchetto software JDK a partire dalla versione 1.1 (pakage java.sql)
Con Java 2, è stato introdotto JDBC 2.0:
Migliorate le funzionalità e i tipi di dato disponibili Offerto come package opzionale per funzionalità estese
Java SE 7 include JDBC 4.
Accesso DB
Architettura JDBC
Accesso DB
Java Application
JDBC Driver Manager
JDBC/Native Bridge
DBMS
Native Driver (DBMS specific)
JDBC/ODBC Bridge
ODBC Driver
All Java JDBC/Net Bridge
All Java JDBC Driver
Network Server
utilizza le interfacce java.sql e javax.sql
implementano java.sql e, in alcuni casi javax.sql
data source
Type 2 Type 1 Type 4 Type 3
Driver JDBC
JDBC è un insieme di interfacce; per usare un’interfaccia è necessario fornire un’implementazione per tutti i metodi che la compongono
chiamato driver JDBC Ogni DBMS ha il proprio driver rilasciato dal produttore o sviluppato da terze parti Sono i driver che realizzano la vera comunicazione con il DB
Accesso DB
Tipi di driver (1/3)
Sono di quattro tipi e possono essere suddivisi in due categorie: 2-tier: client colloquiano direttamente con DB 3-tier: client comunicano con un middle-tier che accede al DB
Accesso DB