Guida Metodologica Accesso ai Dati Oracle da Java

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Guida Metodologica Accesso ai Dati Oracle da Java"

Transcript

1 Controllo delle copie Il presente documento, se non preceduto dalla pagina di controllo identificata con il numero della copia, il destinatario, la data e la firma autografa del Responsabile della Qualità, è da ritenersi copia informativa non controllata. Guida Metodologica Accesso ai Dati Oracle da Java SQC ver. 2 SQC VER. 2 Pag. 1/14

2 Sommario 1 Scopo e campo di applicazione 3 2 Riferimenti Controllo del Documento: Stato delle revisioni Documenti esterni Documenti interni Termini e Definizioni 3 3 Introduzione 4 4 La scelta del driver JDBC Tipologie di Driver JDBC I driver JDBC di Oracle Linee guida per la scelta del driver 5 5 Modalità di Connessione Come connettersi al DB con J2SE Come connettersi al DB con J2EE 6 6 L oggetto statement e le sue estensioni L interfaccia Statement L interfaccia PreparedStatement L interfaccia CallableStatement 9 7 I result set 10 8 Gestione delle eccezioni 11 9 Strategie di accesso ai dati Utilizzo delle Stored Procedure Gli oggetti Oracle Gli Entity Bean ORM: Toplink 14 SQC VER. 2 Pag. 2/14

3 1 Scopo e campo di applicazione Lo scopo di questo documento è fornire un set di linee guida da seguire durante la scrittura di una applicazione Java per l accesso ai dati residenti su un database Oracle. La prima parte del documento sarà dedicata all analisi delle classi coinvolte, mettendone in risalto le differenze e focalizzando l attenzione su vantaggi e svantaggi derivanti dall uso di ciascuna; la seconda parte sarà invece rivolta all individuazione della migliore strategia di accesso ai dati. Essendo il tema trattato di natura prettamente tecnica, ovvero corredato nella sua esposizione da diagrammi, codici d esempio, scenari comuni e casi reali, si ritiene necessario che il lettore possieda uno skill di base sull analisi e la realizzazione di applicazioni object oriented e Java; sono richiesti inoltre conoscenze elementari sui database relazionali, con particolare riferimento ad Oracle, e principi di PL/SQL. 2 Riferimenti 2.1 Controllo del Documento: Stato delle revisioni Vers. Descrizione delle modifiche apportate nella revisione alla versione precedente Cap. modificati 2 Revisione Logo Aziendale N.A. 2.2 Documenti esterni NORMA UNI EN ISO 9001: Sistemi di gestione per la qualità Requisiti; NORMA UNI EN ISO 9004: Sistemi di gestione per la qualità - Linee guida per il miglioramento delle prestazioni; NORMA UNI EN ISO 9000: Sistemi di gestione per la qualità Fondamenti e terminologia Mapping Associations from OODBs to RDBMs (Wolfgang Keller; 1995; sd&m München) Foundations of Object Relational Mapping (Mark L. Fussell; 1997) Java Programming with Oracle JDBC (Donald Bales; 2002; O'Reilly) Oracle9i: Application Developer's Guide - Object-Relational Features (William Gietz; 2002; Oracle Corporation) Thinking in Java, 3rd Edition (Bruce Eckel; 2003) Java Database Interaction Mechanism Using Oracle Reference Cursors (Ravi Kumar Buragapu; 2005) Build Superior Java Applications with Oracle TopLink - An Oracle White Paper (Donald Smith; 2005; Oracle Corporation) 2.3 Documenti interni Manuale della Qualità ACI Informatica; Sistema di Gestione per la Qualità vigente. Guida metodologica Linee Guida Naming & Coding Conventions per Java Guida metodologica Linee Guida - Naming & Coding Convention per Oracle Guida metodologica Java Best Practices Guida metodologica Accesso ai Dati Oracle Mediante Oggetti 2.4 Termini e Definizioni Per i termini, sigle e acronimi contenuti in questo documento si fa riferimento al Glossario dei termini utilizzati nel Sistema Qualità. RDBMS: (ingl.) Relational Data Base Management System. Sistema di gestione di un database relazionale, in cui i dati sono organizzati in tabelle accessibili tramite SQL, un linguaggio di interrogazioni specializzato. ODBC: acronimo per Open DataBase Connectivity. Standard sviluppato verso la fine degli anni ottanta da Microsoft e IBM per lo scambio dei dati tra database diversi. JDBC: (acronimo di Java DataBase Connectivity) interfaccia scritta in linguaggio Java per l accesso a database relazionali. JNDI: (Java Naming and Directory Interface) JNDI è una gerarchia di risorse organizzate in directory e disponibili per tutte le classi Java. L interfaccia JNDI consente la separazione tra la definizione delle risorse in uso dalle applicazioni e il codice dell applicazione stessa. Tra le risorse gestite da JNDI sono compresi DataSources, code JMS ed EJB. SQC VER. 2 Pag. 3/14

4 3 Introduzione Quando si realizza un applicazione Java che si basa su RDMBS, si utilizza l'api JDBC (Java DataBase Connectivity) per dialogare con il database. La comprensione dei meccanismi di funzionamento del RDMBS che si sta utilizzando è una premessa importante per riuscire a scrivere applicazioni che sono in grado di soddisfare i requisiti prestazionali richiesti. In questo documento saranno fornite delle linee guida da seguire quando la base dati risiede su Oracle, aiutando lo sviluppatore nella scelta delle classi e della strategia migliori. L'obiettivo ultimo che ci si prefigge è quello di ottenere applicazioni robuste, veloci e scalabili. Quando si sceglie un database è importante capire per cosa esso è stato progettato e quali sono le tipologie di applicazioni in cui è veramente conveniente utilizzarlo. Oracle è conosciuto come un database per applicazioni entreprise in cui si gestiscono enormi quantità di dati e di utenti concorrenti; è in questi ambiti che Oracle mostra il meglio di se e soprattutto giustifica il suo prezzo. Lo scenario di riferimento per questo documento sarà quindi quello di un ambiente di produzione multiutente in cui si cercherà di individuare i meccanismi utili ad assicurare prestazioni adeguate al crescere degli utenti connessi al sistema e dei dati salvati nel database. 4 La scelta del driver JDBC Stabilire la connessione al database è uno dei primi passi da eseguire quando un applicazione deve interagire con una base dati. Questo passo può apparire facile o addirittura banale, ma spesso la scelta del driver JDBC avviene senza cognizione di causa per mancanza di adeguate informazioni. In questo capitolo si discuterà dei differenti tipi di driver e dei vantaggi di ciascuno di essi. I driver JDBC si differenziano per il linguaggio con cui sono implemantati, Java puro o linguaggio macchina (codice nativo), e per il modo con cui la connessione è effettuata. 4.1 Tipologie di Driver JDBC La Sun ha definito quattro categorie di driver JDBC che si differenziano per l architettura che adottano. Type 1: JDBC bridge driver Questo tipo di driver implementano un bridge per connettere un client Java a driver di terze parti, quale, per esempio, potrebbe essere un driver ODBC. Il bridge JDBC-ODBC della Sun è l esempio più illustre di questo tipo di driver. Type 2: Native API Questo tipo di driver fornisce una interfaccia Java a delle API native. Il driver OCI (Oracle Call Interface) è un esempio di driver di tipo 2. Poiché un driver di tipo due è implementato usando codice nativo è ragionevole aspettarsi prestazioni superiori rispetto ad un driver Java puro. Type 3: Network Protocol Questo tipo di driver comunica tramite il protocollo di rete con un middle-tier server; subito dopo il middle-tier server inoltra la comunicazione al DB server. Oracle non adotta driver JDBC di tipo tre, tuttavia fornisce un programma, il Connection Manger, che in combinazione con driver di tipo quattro può essere assimilato ad un JDBC driver di tipo tre. Type 4: Native Protocol Questo tipo di driver, scritto interamente in Java, comunica direttamente con il database. Non necessita di codice nativo sulla macchina client. Il driver JDBC Thin di Oracle è un esempio di driver JDBC di tipo quattro. 4.2 I driver JDBC di Oracle Oracle mette a disposizione degli sviluppatori driver di tipo due e di tipo quattro. Tralasciando i driver usati server-side, ovvero quelli utilizzati all interno del database, le possibili scelte sono: JDBC OCI Driver È un driver di tipo due che usa l interfaccia nativa OCI di Oracle. Ne esistono varie versioni, tante quante sono le versioni della Oracle Call Interface, e richiede l installazione di Oracle client sulla macchina remota. JDBC Thin Driver È un driver Java puro e non richiede nessuna installazione di software aggiuntivo sulla macchina client. JDBC-ODBC bridge Non è propriamente un driver JDBC per Oracle, ma è un driver di tipo uno fornito dalla Sun. Permette la comunicazione tra le applicazioni Java e qualsiasi database (quindi anche Oracle) per cui è stato definito un ODBC. È qui riportato per completezza. SQC VER. 2 Pag. 4/14

5 La figura successiva esemplifica la modalità di accesso ad un database Oracle usando le tre diverse opzioni a disposizione. JDBC-ODBC Driver Driver ODBC Oracle Call Interface JDBC OCI Driver Oracle Listener Oracle RDBMS JDBC Thin Driver Figura Linee guida per la scelta del driver Ciò che immediatamente si nota in Figura 1 è il differente numero di strati software presenti in ciascuna soluzione: si passa da una comunicazione diretta tra Thin Driver e listener ai ben due presenti tra il bridge JDBC-ODBC e Oracle. Alla luce di questa e delle precedenti considerazioni possiamo fornire le seguenti linee guide per la scelta del driver JDBC: 1. Per le applicazioni client/server si consiglia fortemente l uso del Thin Driver per ragioni di portabilità; questa soluzione non richiede l installazione di Oracle Client e diminuisce i costi di configurazione e manutenzione del software. 2. Per le applet la scelta è obbligata: il Thin Driver. Non è possibile, infatti, fare assunzioni sul software installato sul client. 3. Per le applicazioni batch che devono lavorare massivamente sui dati si suggerisce l uso dell OCI Driver. Infatti, l uso di codice nativo garantisce prestazioni superiori. La stessa Oracle Corporation raccomanda questa soluzione in scenari di questo tipo. 4. Nelle applicazioni Three-Tier si consiglia l uso dell OCI Driver, in quanto la controindicazione dovuta ai costi di configurazione viene meno (il client Oracle è necessario solo nel Tier che effettivamente si collega al DB), mentre resta valida le considerazioni del punto 3 sulle migliori prestazioni del codice nativo. 5 Modalità di Connessione 5.1 Come connettersi al DB con J2SE Una volta individuato il driver JDBC da utilizzare, i passi da seguire per connettersi ad un DB Oracle sono: Aggiungere le istruzioni di import per puntare le classi necessarie. Registrare il driver JDBC. Formattare opportunamente l URL di connessione al database. Invocare il metodo getconnection() sulla classe DriverManager. Di seguito è fornito un esempio di connessione ad una base dati: import java.sql.connection; import java.sql.drivermanager; import java.util.properties; public class JdbcTest { public static void main(string[] args) SQC VER. 2 Pag. 5/14

6 { Connection pconnection = null; Properties pproperties = null; try { pproperties = new Properties(); pproperties.put( user, scott ); pproperties.put( password, tiger ); pproperties.put( defaultrowprefetch, 30 ); pproperties.put( defaultbatchvalue, 5 ); Class.forName("oracle.jdbc.driver.OracleDriver"); pconnection = DriverManager.getConnection( "jdbc:oracle:thin:@ :1521:hr", pproperties); System.out.println("Connection done"); Esempio 1 Come si può notare il metodo getconnection usato accetta, oltre che l URL del DB (o stringa di connessione), un oggetto di tipo Properties. Ciò permette di poter definire, oltre utente e password, anche altri parametri di sessione; tra i più importanti si segnalano defaultrowprefetch, che indica il numero di righe prefetched, e defaultbatchvalue, che indica il numero di query batch che innesca l esecuzione delle stesse. Un valore ottimale assegnato a questi parametri potrebbe portare a migliorare le prestazioni del sistema. 5.2 Come connettersi al DB con J2EE In ambito J2EE l accesso al database è mediato dall Application Server. I parametri di connessione (URL, UserName, Password, ) sono configurati dal deployer. Lo sviluppatore può ottenere la connessione al database richiedendola all Application Server usando un reference (o riferimento). Sarà compito del deployer mappare il riferimento sulla risorsa JNDI appropriata secondo le indicazioni del gruppo applicativo. Connection pconnection = null; Context pcontext = new InitialContext(); DataSource pdatasource = (DataSource) pcontext.lookup("java:comp/env/jdbc/appdatasource"); pconnection = pdatasource.getconnection(); pconnection.setautocommit(false); pconnection.commit(); pconnection.close(); Esempio 2 Nell esempio appena presentato il riferimento jdbc/appdatasource rappresenta il datasource dell applicazione (di cui lo sviluppatore conosce solo i metadati). Al momento del deploy dell enterprise application tale reference sarà agganciato alla risorsa JNDI effettivamente utilizzata dell applicazione in modo del tutto trasparante allo sviluppatore. Qualunque sia l ambito di utilizzo di JDBC (J2SE o J2EE) è bene ricordare che Oracle offre il supporto alle transazioni. È sempre buona norma rendere esplicito il comportamento delle transazioni. L istruzione pconnection.setautocommit(false) disabilita l autocommit per la connessione pconnection. Il SQC VER. 2 Pag. 6/14

7 comportamento di default di Oracle stabilisce che l autocommit è abilitato. I metodi commit e rollback della classe Connection effettuano rispettivamente la commit e il rollback delle transazioni pendenti. È buona norma di programmazione non lasciare connessioni pendenti al DB. Tutte le connessioni aperte devono essere rilasciate utilizzando il metodo close della classe Connection. 6 L oggetto statement e le sue estensioni 6.1 L interfaccia Statement L oggetto Statement è creato su una connessione ad un database attiva attraverso il metodo createstatement( ) e permette di eseguire istruzioni SQL DDL (Data Definition Language: CREATE, ALTER, DROP) e DML (Data Manipulation Language: SELECT, INSERT, UPDATE, DELETE); al contrario le istruzioni DCL (Data Control Language: COMMIT, SAVEPOINT, ROLLBACK e SETTRANSACTION) sono eseguite con invocazioni a metodi specifici sull oggetto Connection. L oggetto Statement può utilizzare il metodo execute( ) per eseguire ogni possibile istruzione SQL valida. Il metodo execute( ) può ritornare un valore a runtime per determinare se c è un result set e quindi utilizzare getresultset( ) per ottenere i dati; è possibile utilizzare il metodo getupdatecount( ) per determinare a runtime il numero di righe interessate da una operazione di aggiornamento sul DB. Tuttavia, quando si ha la necessità di eseguire degli statement di INSERT, UPDATE o DELETE è preferibile usare il metodo executeupdate( ) che ha un comportamento specializzato per le operazioni di aggiornamento sul database; per ragioni analoghe è sempre preferibile usare il metodo executequery( ) nel caso di query di selezione. Il codice seguente fornisce un esempio d uso dell oggetto Statement boolean bresultset = false; Statement pstatement = null; try { pstatement = pconnection.createstatement( ); bresultset = pstatement. execute("select 'Hello ' USER from dual"); Esempio 3 Chi ha esperienza di programmazione Java conosce già l interfaccia Statement; in ogni caso i JavaDoc, descrivendone in dettaglio gli attributi e i metodi, costituiscono un irrinunciabile punto di riferimento per chiunque. Cosa meno nota è che JDBC definisce anche altre due interfacce, PreparedStatement e CallableStatement, che estendono Statement definendo una gerarchia a tre livelli secondo quanto mostrato dal seguente diagramma delle classi. Figura L interfaccia PreparedStatement Analogamente allo Statement, un PreparedStatement può essere usato per inserire, aggiornare, cancellare e selezionare dati. Tuttavia i PreparedStatement sono statement precompilati che possono essere riusati per eseguire in modo più efficiente istruzioni SQL identiche con differenti valori. I SQC VER. 2 Pag. 7/14

8 PreparedStatement interrogano Oracle una sola volta per ottenere i metadati della query, mentre gli Statement effettuano una interrogazione per ogni esecuzione. Inoltre, poiché è utilizzato il bind delle variabili, il database compila e conserva in cache l istruzione SQL riusandola nelle esecuzioni seguenti per migliorare le performance. I PreparedStatement sono anche utili in quanto alcuni tipi di valori, come per esempio I BLOB, le collezione, ecc non sono rappresentabili come SQL text. Con i PreparedStatement si usano dei puntiinterrogativi (?) come segnaposto all interno dello statement SQL; successivamente questi sono sostituiti con i valori appropriati usando i metodi accessori setxxx( ), disponibili per ogni tipo di dato. Quanto appena detto potrebbe far credere che l uso di oggetti PreparedStatement assicuri sempre prestazioni maggiori. Ciò perché gli oggetti PreparedStatement interrogano Oracle una sola volta per ottenere i metadati della query rendendo le query successive alla prima fino al 50% più veloci. Bisogna considerare, però, che il binding delle variabili, la compilazione e il caching della query introducono un certo overhead. I test illustrati da Donald Bales [2.1.3] dimostrano che l overhead dovuto all uso di un PreparedStatement viene compensato solo dopo 65 esecuzioni della query. Ne consegue che per un piccolo numero di esecuzioni potrebbe essere vantaggioso usare un oggetto Statement piuttosto che un oggetto PreparedStatement. Il codice seguente costituisce un esempio d uso dell oggetto PreparedStatement try { PreparedStatement ppreparedstatement; ppreparedstatement = pconnection. preparestatement( insert into + MYTABLE ( MYFIELD1, MYFIELD1) values (?,? ) ); ppreparedstatement setstring(1, "AAA"); ppreparedstatement.setint(2, 123) ppreparedstatement.execute(); ppreparedstatement = pconnection. preparestatement( update MYTABLE set MYFIELD1 =? + where MYFIELD2 =? ); ppreparedstatement setstring(1, "AAA"); ppreparedstatement.setint(2, 123) ppreparedstatement.execute(); ppreparedstatement = pconnection. preparestatement( delete MYTABLE where MYFIELD1 =? ); ppreparedstatement setstring(1, "AAA"); ppreparedstatement.execute(); ppreparedstatement = pconnection. preparestatement( select?, MYFIELD2 from MYTABLE + where MYFIELD2 =? ); ppreparedstatement setstring(1, "AAA"); ppreparedstatement.setint(2, 123) ppreparedstatement.execute(); Esempio 4 Si fa notare che il punto interrogativo nella select list dell ultima query rappresenta un valore costante e non il nome di una colonna. SQC VER. 2 Pag. 8/14

9 6.3 L interfaccia CallableStatement Un oggetto CallableStatement è usato per invocare stored procedure. In Oracle, con il termine generale stored procedure ci si riferisce all insieme delle standalone stored function, standalone procedure, packaged function e procedure. Le stored procedure Oracle possono essere scritte in Java o in PL/SQL. Come noto, le stored procedure sono state inventate per eseguire operazioni data-intensive che non possono essere compiute usando solamente SQL. Le stored procedure vengono eseguite all interno del database; le loro performance non risentono quindi dei tempi di latenza su rete. Per invocare una stored procedure è necessario conoscerne il nome e la natura dei parametri passati alla procedura. Nel caso di una funzione è necessario conoscere anche il tipo del valore di ritorno. È possibile ottenere queste informazioni interrogando il data dictionary di Oracle come mostrato nell esempio seguente. SQL> select * from user_procedures; OBJECT_NAME PROCEDURE_NAME AGG ALIMENTASTORICO ALIMENTASTORICO NO ALLINEA_SEQUENCE_TIPOLOGICA NO ASSEGNATUTTIIMETODI NO CREATE_TYPES ALTERTYPES NO CREATE_TYPES LAUNCHTYPESCREATOR NO DATETOCHAR NO GETCODICETIPOLOGICA NO GETDATAFINEVALIDITA NO GETDATAFORINSUPD NO SQL> desc ALIMENTASTORICO; PROCEDURE ALIMENTASTORICO Nome argomento Tipo In/Out Predef.? P_TABLENAME VARCHAR2 IN P_STRISTANZADB VARCHAR2 IN DEFAULT Esempio 5 Chiamare una stored procedure da Java è un processo in cinque fasi. Le operazioni da svolgere sono, nell ordine: Formulare un callable statement: cioè preparare una stringa opportunamente formattata per invocare una stored procedure. È possibile usare indifferentemente la sintassi SQL92 o Oracle /* Sintassi SQL92 */ {? = call [schema.][package.] function_name [(?,?,)] {call [schema.] [package.]procedure_name[(?,?,)]) /* Sintassi Oracle */ begin?:=[schema.][package.]function_name[(?,?,)]; end; begin [schema.][package.]procedure_name[(?,?,)]; end; Esempio 6 Creare un un CallbleStatement un CallableStatement è creato invocando il metodo preparecall( ) su un oggetto Connetion passando la stringa preparata nel passo precedente. CallableStatement pcallablestatement = null; try { pcallablestatement = pconnection. preparecall("{? = call function_name (?,?, ) "); Esempio 7 Registrare ogni parametro di output SQC VER. 2 Pag. 9/14

10 Per poter ottenere i dati da una chiamata a stored procedure occorre registrare i parametri di OUT o IN OUT prima di eseguire il CallableStatement. Per far ciò si usa il metodo registeroutparameter( ) dell oggetto CallableStatement. pcallablestatement.registeroutparameter(1, Types.DOUBLE, 2); Esempio 8 Settare i parametri di input: Analogamente ai prepared statement, questa operazione è eseguita usando i metodi accessori setxxx( ) passando la posizione del carattere segnaposto del callable statement e un opportuno valore. pcallablestatement.setstring(1, smystring); Esempio 9 Eseguire il callable statement: Dopo aver svolto le suddette operazioni preliminari un callable statement può essere eseguito utilizzando il metoto execute ( ) dell oggetto CallableStatement. pcallablestatement.execute(); Esempio 10 Si sottolinea ancora una volta che un CallableStatement è un PreparedStatement (Vedi Figura 2); perciò, tutto quanto detto in precedenza sulle performance dei PreparedStatement rispetto ad un oggetto Statement è integralmente applicabile anche ai CallableStatement. 7 I result set Come abbiamo avuto modo di vedere nel capitolo precedente l utilizzo del metodo executequery( ) della classe Statement ritorna un oggetto di tipo ResultSet. Un ResultSet contiene i risultati di una query su un database. All interno di un database i dati risiedono in tabelle contenenti righe e colonne; l organizzazione di ResultSet riflette quella di una tabella. Un ResultSet fornisce un insieme di metodi accessori per navigare attraverso i dati estratti, mentre altri permettono di prelevare i valori (di tipi SQL standard o proprietari Oracle) o i metadati della query. Tali metodi sono ben noti agli sviluppatori Java e non saranno quindi oggetto di questa trattazione. Ad ogni modo i JavaDoc ne forniscono un elenco completo e dettagliato. Quando un oggetto ResultSet è ritornato da uno Statement, il suo cursore è inizialmente posizionato prima della prima riga del set di risultati. Per tale ragione, la prima invocazione del metodo next( ) posiziona il cursore sulla prima riga estratta. Il metodo next( ) restituisce un valore booleano (false se non esiste nessuna riga successiva a quella corrente) e può essere quindi utilizzato per verificare la presenza di dati rispondenti ai parametri di selezione. Il metodo next( ) è tipicamente utilizzato all interno di un loop, come mostra l esempio seguente: ResultSet presultset = null; Statement pstatement = null; try { pstatement = pconnection.createstatement( ); presultset = pstatement. executequery("select owner, table_name + from all_tables"); while (presultset.next( )) { Esempio 11 Con le specifiche JDBC 1.0 i ResultSet potevano essere in sola lettura e navigabili in avanti (cioè non esisteva il metodo previous( ) e i suoi derivati). Con le specifiche JDBC 2.0 i ResultSet possono essere navigati in qualsiasi direzione e possono anche essere aggiornabili. Per implementare queste funzionalità il metodo createstatement( ) della classe Connection è stato sovraccaricato definendo il metodo Statement createstatement(int resultsettype, int resultsetconcurrency) SQC VER. 2 Pag. 10/14

11 Per il parametro resultsettype, esistono tre possibili valori costanti (attributi static final della classe ResultSet): TYPE_FORWARD_ONLY Crea un ResultSet forward-only. TYPE_SCROLL_INSENSITIVE Crea un ResultSet navigabile in entrambe le direzioni insensibile alle modifiche apportate al database. Se una qualche modifica viene apportata su Oracle mentre il ResultSet è ancora aperto, l applicazione Java non vedrà tali modifiche a meno che, naturalmente, non apra un nuovo ResultSet. TYPE_SCROLL_SENSITIVE Contrariamente al precedente, crea un ResultSet in grado di riflettere immediatamente sull applicazione Java i cambiamenti avvenuti sul DB. Anche in questo caso il ResultSet è navigabile in entrambe le direzioni. Per il parametro resultsetconcurrency, esistono due possibili costanti (attributi static final della classe ResultSet) CONCUR_READ_ONLY Crea un ResultSet read-only. CONCUR_UPDATABLE Crea un ResultSet aggiornabile. Oracle implementa la navigabilità dei ResultSet usando una memory cache client-side. Per tale ragione i paramentri TYPE_SCROLL_* dovrebbero essere usati con cautela in quanto potrebbero avere degli impatti negativi sulle performance delle applicazioni a causa dell elevato uso di memoria della JVM. Per implementare i ResultSet aggiornabili, Oracle usa il ROWID, un valore che identifica univocamente ogni rigo nel database. Sebbene non sia esplicitamente stata richiesta dall applicazione, questo valore viene estratto per ogni record di un set aggiornabili portando ad un maggiore volume di dati in transito sulla rete e residenti sulla JVM. Anche in questo caso, quindi, i record aggiornabili devono essere usati con cautela. Il metodo createstatement( ) crea ResultSet forward-only e read-only. 8 Gestione delle eccezioni Le eccezioni costituiscono il meccanismo adottato da Java per gestire le situazioni inattese (eccezionali). La gestione delle eccezioni fa parte del bagaglio culturale di base degli sviluppatori Java ed illustrarlo non rientra negli obiettivi di questo documento. Al contrario, questo capitolo si prefigge lo scopo di esaminare più in dettaglio la classe java.sql.sqlexception. Una SQLException può esere sollevata a seguito del verificarsi di eventi inattesi sia nel driver che nel database. Quando tale eccezione viene lanciata un oggetto della classe SQLException sarà passato alla clausola catch per gestire l anomalia. Oltre ai metodi ereditati dalla superclasse, una SQLException espone i seguenti per ottenere informazioni aggiuntive sull eccezione sollevata: geterrorcode( ) Restituisce il codice d errore Oracle associate all eccezione. getmessage( ) Restituisce il messaggio d errore del driver JDBC, se l eccezione è stata sollevata dal Driver, o il codice d errore e il messaggio, se l eccezione è stata sollevata dal database. getsqlstate( ) Restituisce la stringa XOPEN SQLstate. Occorre tenere presente durante la programmazione che questo metodo può anche ritornare null. getnextexception( ) Ritorna il successivo oggetto Exception della catena delle eccezioni. Utilizzando le informazioni restituite dall oggetto Exception e catturando l eccezione è possibile far seguire al programma un flusso opportuno. Naturalmente la scelta della strategia per il recupero delle situazioni anomale non può prescindere dal tipo di errore. Per questa ragione è sempre necessario avere a disposizione la lista completa dei codici d errore di Oracle con la loro spiegazione. SQC VER. 2 Pag. 11/14

12 9 Strategie di accesso ai dati 9.1 Utilizzo delle Stored Procedure Navigando su internet e leggendo gli articoli sulla stampa specializzata, sembra affermarsi il trend dell utilizzo delle stored procedure per l accesso ai dati. La stessa Oracle corporation suggerisce questa strategia. In effetti i vantaggi derivanti da questa tecnica sono numerosi ed importanti. Tra i primi segnaliamo che l uso delle stored procedure permette di astrarre le classi dalla struttura fisica del database. Supponiamo per esempio di voler ottenere la fabbrica, il tipo e la serie di un autoveicolo estraendola da un database composto da una sola tabella con la seguente struttura logica. Figura 3 La nostra stored procedure, chiamata per esempio GET_FTS_DATA, conterrà al suo interno una istruzione SQL del tipo SELECT Fabbrica, Tipo, Serie FROM Veicolo WHERE Esempio 12 e verrà invocata in ogni punto del codice Java in cui è necessario ottenere queste informazioni. Se nel corso dell evoluzione dell applicazione lo schema del database dovesse cambiare (per esempio per esigenze di normalizzazione) diventando il seguente: Figura 4 Il solo cambiamento necessario sarebbe localizzato nella stored procedure dove la select diventerebbe del tipo: SELECT Fabbrica, Tipo, Serie FROM Fabbrica INNER JOIN Veicolo ON Fabbrica.Id_Fabbrica = Veicolo.Id_Fabbrica WHERE Esempio 13 SQC VER. 2 Pag. 12/14

13 Il codice Java rimarrebbe immutato continuando a chiamare la procedura GET_FTS_DATA, ignaro dei cambiamenti nel database. Altre tecniche di astrazione, quali ad esempio file di configurazione contenenti le istruzioni SQL o l utilizzo di viste, non sono altrettanto sicure o nascondono solo parzialmente la struttura fisica del DB. Le stored procedure evitano problemi derivanti dalla duplicazione del codice SQL. Bisogna infatti considerare che il database può essere condiviso da più applicazioni, non tutte necessariamente in piattaforma J2EE. Evitare la proliferazione e la ripetizione del codice SQL porta ad avere una architettura complessiva delle applicazioni aziendali più stabile e manutenibile e una logica di accesso al database uniforme. Ciò, a sua volta, rende il tuning del database e delle query più agevole e veloce; i benefici di questa attività saranno subito propagati a tutte le applicazioni. Come abbiamo avuto modo di sottolineare in precedenza una query effettuata utilizzando le stored procedure è di solito più veloce: l hoverhead dovuto alla compilazione delle procedure, sebbene presente, è limitato alla sola prima esecuzione. In uno scenario di applicazioni enterprise e multiutente o batch con esecuzioni ripetute della query i vantaggi sono evidenti. Vantaggi sono presenti anche dal punto di vista della sicurezza: l utilizzo esclusivo di stored procedure consente di assegnare agli utenti applicativi, i più esposti dal punto di vista della sicurezza, le sole grant di execute. In questo modo, se anche l utenza e la password dovessero venire intercettate, un utente malizioso avrebbe comunque un accesso limitato alle risorse e ai dati del database. Le stored procedure agevolano anche il monitoraggio da parte del DBA, permettendo di sfruttare a pieno le potenzialità di strumenti quali statspack. In quanto componenti software destinati ad un ambiente di esecuzione diverso da Java, le stored procedure appesantiscono la gestione della configurazione. Anche il ciclo di vita del software richiede una gestione più dispendiosa, dato che i passaggi da un ambiente ad un altro richiedono necessariamente l intervento del gruppo DBA oltre che dei deployer. Inoltre è sempre concreto il rischio di una loro eccessiva proliferazione: in casi limite si giunti ad avere procedure distinte per query che si differenziano solo per il tipo di ordinamento del set di dati ritornato; l utilizzo delle stored procedure richiede quindi una analisi della logica di accesso più attenta ed oculata. 9.2 Gli oggetti Oracle L uso degli oggetti Oracle rappresenta una possibile interessante funzionalità aggiuntiva alle stored procedure. La documentazione Oracle riporta la capacità di immagazzinare tipi di dati definiti dall utente fin dalla versione 8i. Utilizzando gli oggetti Oracle è possibile fare in modo che le strutture dati di Java relative a business level e data level vadano a coincidere eliminando completamente lo strato di traduzione. Per raggiungere questo obiettivo occorre: 1. Definire un tipo di oggetto oracle in cui gli attributi corrispondano a delle colonne in una tradizionale tabella relazionale. 2. Creare una vista di oggetti per estrarre i dati. 3. Creare un trigger INSTEAD OF per rendere la vista aggiornabile. 4. In alternativa al punto precedente è possibile di definire all interno degli oggetti Oracle dei metodi che si occupano della serializzazione dell oggetto. Il mapping tra le proprietà dell oggetto Java e dell oggetto Oracle verrà reso attraverso l implementazione da parte dell oggetto Java di due interfacce: OraData e OraDataFactory. Tali interfacce definiranno i processi di serializzazione e deserializzazione del dato. La scelta di implementare degli oggetti dotati di metodi per salvare le proprie variabili membro sembra essere la più comoda in quanto assegna ad ogni oggetto la responsabilità di serializzare se stesso sul database e concentra in un unica struttura Oracle (l oggetto appunto) i dati dell oggetto (proprietà) e la logica di persistenza (metodi). In questo caso, tuttavia, è necessario passare l oggetto ad una stored procedure; questa modalità di accesso ai dati diventa quindi una estensione della precedente. Sebbene le funzionalità necessarie all uso di questa tecnica siano state rilasciate da tempo solo con la versione del database, Oracle riesce a supportare pienamente questa tecnica. Occorre inoltre sottolineare che la letteratura non riporta ancora casi reali di utilizzo in applicazioni enterprise di grandi dimensioni, ne dati affidabili sulle performance. Ciononostante questa tecnica è stata sperimentata ed utilizzata in azienda in ambito PRA e nelle applicazioni del Centro Servizi (CS). SQC VER. 2 Pag. 13/14

14 9.3 Gli Entity Bean Gli entity bean sono la soluzione J2EE al problema della persistenza. Le specifiche Sun consigliano l uso degli Entity Bean, Container Maneged Persistence (CMP) o Bean Managed Persistence (BMP), per leggere e scrivere i dati in un database. I vantaggi architetturali derivanti dal loro utilizzo sono evidenti: un entity bean è un componente che incapsula e implementa una entità del business layer. L entità incapsulata è tipicamente indipendente dall applicazione client che usa l entity bean. Come conseguenza uno stesso entity bean può essere usato da molte applicazioni client. Esistono inoltre altri vantaggi pratici derivanti dall uso degli entity; gli entity bean permettono infatti una gestione fine-grained delle transazioni, senza la necessità di preoccuparsi di fornire i demarcatori di inizio e fine transazione. Inoltre gli entity bean (attraverso il container) offrono anche funzionalità di connection pooling e caching dei bean; l accesso ai servizi di mail e di messaging è facilitato. Sfruttando l interfaccia javax.ejb.timer è possibile creare entity bean temporizzati, oggetti particolarmente utili, anche se di fatto introducono uno strato di business logic all'interno del dominio dei dati, per cui violano in qualche modo alcune delle best practice J2EE, secondo le quali un entity è una rappresentazione OO di dati resi persistenti da qualche parte. Utilizzando gli EJB di entità non è necessario scrivere statement JDBC riducendo i tempi di sviluppo. Se si sceglie di usare i CMP la gestione delle transazioni avviene senza la necessità di scrivere codice e la sicurezza è gestita dall application server. Esistono tuttavia anche delle controindicazioni: i CMP non gestiscono il join tra tabelle. Inoltre, diversamente dagli oggetti DAO, sia i CMP che i BMP sono disponibili solo su piattaforme J2EE e la portabilità tra application server diversi non è sempre garantita. Dato che l accesso ai dati è comunque mediato dall application server si può riscontrare una perdita di performance. Gli oggetti DAO supportano tabelle (con o senza chiave primaria), viste e stored procedure, mentre gli entity bean supportano solo tabelle con chiavi primarie. 9.4 ORM: Toplink Con l Object Relational Mapping (ORM) la persistenza viene resa utilizzando particolari strumenti, detti motori di persistenza (il più noto nella comunità open source è Hibernate), i quali non sono altro che framework che, in modo meno invasivo possibile, consentono il salvataggio ed il recupero dello stato di un oggetto sulla base dati. La persitenza è ottenuta attraverso la reflection, che consente nella piattaforma Java di ispezionare il contenuto degli oggetti per conoscerne i metodi e gli attributi, e quindi per accedere agli uni o agli altri. Questo tipo di persistenza trasparente somiglia da vicino a quella promessa dei bean di entità CMP, dove è il component container a svolgere una funzione che corrisponde alla descrizione data sopra. La tecnologia EJB, però, richiede dei descrittori più complessi, ed impone l'utilizzo di interfacce e superclassi presenti nel framework EJB, come javax.ejb.entitybean e javax.ejb.sessionbean. I motori di persistenza lavorano invece con semplici POJO, acronimo che sta per Plain Old Java Object. Un POJO indica un semplice, tradizionale oggetto Java, privo degli orpelli che solitamente vengono imposti dai framework per questa o quella funzione, come le sopracitate interfacce EJB. Anche la Oracle Corporation ha acquistato ed evoluto un motore per l OR Mapping chiamato Toplink. I maggiori benefici derivanti dall uso di Toplink sono: Portabilità: Toplink supporta tutti i maggiori application server e database, fornendo certificazioni e test report per tutte le release e le patch. Tuttavia Toplink mostra il meglio di se quando usato insieme agli altri software della casa produttrice: Oracle Application Server e Oracle DB. Aumento della produttività: Toplink permette la configurazione dei metadati attraverso dei file XML amministrati graficamente tramite degli editor che ne agevolano la gestione. Le maggiori criticità riguardano: Performance: le performance di Toplink variano sensibilmente al variare dei parametri di configurazione ed in particolar modo al variare delle dimensioni della shared object cache. Per ottenere prestazioni ottimali è necessaria una attenta fase di tuning. Gestione: per schema con un numero elevato di tabelle, la gestione dei numerosi file di configurazione può risultare critica. La comunità degli utenti pone generalmente a 50 il limite massimo di tabelle gestibili con un qualsiasi strumento per ORM. Flessibilità: accessi particolarmente articolati potrebbero essere difficili o impossibili da realizzare con uno strumento di questo genere richiedendo comunque il ricorso a stored procedure invocate usando JDBC. SQC VER. 2 Pag. 14/14

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico JDBC Marco Tessarotto Programmazione dei Web Server Anno Accademico 2004-2005 JDBC JDBC (Java Database Connectivity) è una API Java per accedere ed elaborare dati in una sorgente dati (di solito un db

Dettagli

JDBC. Paolo Atzeni. 11 marzo Progettazione di applicazioni, una premessa

JDBC. Paolo Atzeni. 11 marzo Progettazione di applicazioni, una premessa JDBC Paolo Atzeni 11 marzo 2002 Progettazione di applicazioni, una premessa Il paradigma a tre livelli (three-tier) JDBC: la API per far interagire applicazioni Java con basi di dati marzo 2002 P. Atzeni,

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: JDBC Concetti Fondamentali versione 1.0 G. Mecca mecca@unibas.it Università della Basilicata JDBC >> Sommario Concetti Fondamentali Introduzione

Dettagli

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1 Modalità d uso SQL per le applicazioni Indipendentemente dalla soluzione CLI adottata, esiste una strutturazione comune dell interazione con il DBMS apertura della connessione con il DBMS esecuzione di

Dettagli

SQL per le applicazioni D B M G

SQL per le applicazioni D B M G SQL per le applicazioni Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface

Dettagli

SQL per le applicazioni D B M G

SQL per le applicazioni D B M G SQL per le applicazioni Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface

Dettagli

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1 SQL per le applicazioni Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface

Dettagli

2011 Politecnico di Torino 1

2011 Politecnico di Torino 1 SQL per le applicazioni Call Level Interface Le richieste sono inviate al DBMS per mezzo di funzioni del linguaggio ospite soluzione basata su interfacce predefinite API, Application Programming Interface

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi: SQL e linguaggi di programmazione L interazione con l ambiente SQL può avvenire in 3 modi: in modo interattivo col server attraverso interfacce o linguaggi ad hoc legati a particolari DBMS attraverso i

Dettagli

Una breve presentazione. Basati sulla specifica EJB Sun Microsystems. Consentono di costruire applicazioni ad oggetti distribuite, utilizzando Java

Una breve presentazione. Basati sulla specifica EJB Sun Microsystems. Consentono di costruire applicazioni ad oggetti distribuite, utilizzando Java Enterprise JavaBeans Approfondimento per il corso di Sistemi Distribuiti A.A. 2002/2003 Una breve presentazione Basati sulla specifica EJB Sun Microsystems Consentono di costruire applicazioni ad oggetti

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

D B M G 2. Linguaggio SQL: costrutti avanzati. SQL per le applicazioni

D B M G 2. Linguaggio SQL: costrutti avanzati. SQL per le applicazioni Linguaggio SQL: costrutti avanzati DB M B G Introduzione Concetto di cursore Aggiornabilità SQL statico e dinamico Embedded SQL Call Level Interface (CLI) Stored Procedure Confronto tra le alternative

Dettagli

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi. Introduzione a JDBC JDBC (Java Database Connectivity) è la parte delle API di J2SE che fornisce le primitive per la connessione a basi di dati relazionali: si inviano comandi SQL; si recuperano i risultati

Dettagli

PRIMO MODULO. DURATA: 80 ore CONTENUTI

PRIMO MODULO. DURATA: 80 ore CONTENUTI 0 PRIMO MODULO DURATA: 80 ore CONTENUTI 1. Introduzione alla programmazione a. Cosa è la programmazione strutturata b. Strutture dati c. Come si affronta una problematica da risolvere d. Quali sono i passi

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: JDBC Dettagli e Approfondimenti versione 3.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

A. Ferrari introduzione alle basi di dati

A. Ferrari introduzione alle basi di dati introduzione alle basi di dati informatica archiviazione mediante file o i vari S.O. e i cosiddetti linguaggi ad alto livello mettono a disposizione varie tipologie di file per l archiviazione e gestione

Dettagli

Programmazione Java Avanzata Spring - JDBC

Programmazione Java Avanzata Spring - JDBC Programmazione Java Avanzata Spring - JDBC Ing. Gianluca Caminiti Riferimenti Spring http://www.springsource.org/ (scaricate il reference) Beginning Spring 2 - From Novice to Professional. APress. 2008

Dettagli

SQL per le applicazioni. Basi di dati. Elena Baralis. Pag Politecnico di Torino 1 D B M G2 D B M G4 D B M G5 D B M G6. SQL per le applicazioni

SQL per le applicazioni. Basi di dati. Elena Baralis. Pag Politecnico di Torino 1 D B M G2 D B M G4 D B M G5 D B M G6. SQL per le applicazioni Linguaggio SQL: costrutti avanzati Introduzione Concetto di cursore Aggiornabilità SQL statico e dinamico Embedded SQL Call Level Interface (CLI) Stored Procedure Confronto tra le alternative DB M B G

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION 0 DURATA 200 ore CONTENUTI Oracle PL/SQL Introduzione al PL/SQL Cenni su SQL con utilizzo di SQL*PLUS Configurazione ambiente Developer DB Classi,

Dettagli

JDBC JDBC. Driver di accesso. Autore: Roberto Fabbrica Diapo 1. Diapo 2. Diapo 3

JDBC JDBC. Driver di accesso. Autore: Roberto Fabbrica Diapo 1. Diapo 2. Diapo 3 1 JDBC JDBC è il nome della tecnologia di accesso a database di Java. Il grosso pregio di questa tecnologia è la pressoché completa indipendenza del codice dal tipo di database o di DBMS a cui si intende

Dettagli

Introduzione alle basi di dati. A. Ferrari

Introduzione alle basi di dati. A. Ferrari Introduzione alle basi di dati A. Ferrari Archiviazione mediante file I vari S.O. e i cosiddetti linguaggi ad alto livello mettono a disposizione varie tipologie di file per l archiviazione e gestione

Dettagli

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC Programma didattico Sviluppare Applicazioni Distribuite in ambiente Spring MVC Programma del corso 1.Progettazione e Sviluppo Database Relazionali Questa competenza permette di Progettare e Sviluppare

Dettagli

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI Introduzione alle basi di dati (2) 2 Modelli dei dati, schemi e istanze (1) Nell approccio con basi di dati è fondamentale avere un certo livello di

Dettagli

Accesso alle Basi di Dati

Accesso alle Basi di Dati Accesso alle Basi di Dati I Sistemi Informativi hanno il compito di gestire in modo efficiente ed affidabile i dati, mantenuti in una forma strutturata e possibilmente normale. La struttura dei dati viene

Dettagli

SQL DDL. Create database. Alter database. Drop database

SQL DDL. Create database. Alter database. Drop database SQL In informatica, SQL (Structured Query Language) è un linguaggio standardizzato per database basati sul modello relazionale (RDBMS), progettato per le seguenti operazioni: creare e modificare schemi

Dettagli

A. Ferrari introduzione alle basi di dati

A. Ferrari introduzione alle basi di dati introduzione alle basi di dati DataBase Management System DBMS o DataBase Management System o insieme di programmi che offrono a diverse tipologie di utenti tutti gli strumenti necessari per gestire grandi

Dettagli

MySQL Server e Workbench.

MySQL Server e Workbench. MySQL Server e Workbench foglia@iet.unipi.it MySQL MySQL o Oracle MySQL è un Relational database management system (RDBMS) Multisessione Multiutente MySQL viene sviluppato e gestito come software open-source,

Dettagli

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018

PROGRAMMAZIONE DIDATTICA DI DIPARTIMENTO A.S. 2017/2018 ISTITUTO ISTRUZIONE SUPERIORE EINAUDI - SCARPA TECNOLOGICO - ECONOMICO PROFESSIONALE Via J. Sansovino, 6-31044 MONTEBELLUNA (TV) 0423 23587 - Fax 0423 602717 web: www.iiseinaudiscarpa.gov.itemail: info@iiseinaudiscarpa.gov.it

Dettagli

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo. Corso integrato di Sistemi di Elaborazione Modulo I Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Basi di dati: introduzione 2 Introduzione Gestione delle informazioni Basi di dati / DBMS Modello dei

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1 Modelli di Base Dati 4 Un DBMS: Access a.a. 2001/2002 4.1 DBMS 4.2 DBMS = Data Base Management System Software per la costruzione e la gestione di una base dati Esempi di DBMS: Oracle, MySQL, SQLServer,

Dettagli

ARCHITETTURA DI UN DBMS

ARCHITETTURA DI UN DBMS ARCHITETTURA DI UN DBMS Modelli di dati Un approccio con basi di dati fornisce un certo livello di astrazione dei dati Nasconde i dettagli sulla memorizzazione dei dati stessi Un modello dei dati fornisce

Dettagli

Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011

Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011 Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2010/2011 Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale A cura di: Stefano Monti stefano.monti6@unibo.it

Dettagli

A livello fisico, un istanza di base di dati Oracle è composta. Gubiani & Montanari Oracle Database 3

A livello fisico, un istanza di base di dati Oracle è composta. Gubiani & Montanari Oracle Database 3 Oracle Database Express Edition Donatella Gubiani e Angelo Montanari Gubiani & Montanari Oracle Database 1 (Oracle XE) è una versione gratuita della base di dati È facile da installare e gestire Può essere

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE

Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE ARCHIVIAZIONE DEI DATI I vari S.O. e i cosiddetti linguaggi ad alto livello mettono a disposizione varie tipologie di file per l archiviazione e gestione

Dettagli

Luca Cabibbo. Persistenza di oggetti

Luca Cabibbo. Persistenza di oggetti AP Analisi S Analisi e Progettazione del Software Persistenza di oggetti aprile 2004 1 Persistenza di oggetti Motivazioni e contenuti Contesto applicazioni sviluppate mediante le moderne tecniche di OOA/OOD/OOP

Dettagli

Introduzione alle JSP

Introduzione alle JSP Introduzione alle JSP Corso di Sistemi Web e Basi Dati Prof. Antonio d Acierno Java Server Page JSP Riferimenti http://java.sun.com/products/jsp http://www.coreservlets.com http://www.html.it/jsp Le JSPs

Dettagli

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso Servlet & JDBC 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC (Java Database Connectivity).

Dettagli

Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale

Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale Alma Mater Studiorum - Università di Bologna CdS Laurea Magistrale in Ingegneria Informatica I Ciclo - A.A. 2016/2017 Sistemi Distribuiti M Proposte di Esercizio- Introduzione Generale A cura di: Stefano

Dettagli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli UNIVERSITA DI FIRENZE Facoltà di Ingegneria Persistenza Applicazioni Enterprise Uso dei modelli 1 IL problema della persistenza APPLICAZIONE (programmi) (oggetti) DATI PERSISTENTI (file, record) (basi

Dettagli

L'ambiente DB2 in LAB (e come collegarsi da remoto)

L'ambiente DB2 in LAB (e come collegarsi da remoto) L'ambiente DB2 in LAB (e come collegarsi da remoto) Sistemi Informativi T Versione elettronica: L00.DB2inLAB.pdf Il server IBM DB2 Il server DB2, edizione Express-C, è installato su una macchina Linux

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O / Servlet: interazione con un DBMS

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O / Servlet: interazione con un DBMS Servlet & JDBC 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 0 / 2 0 1 1 Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC

Dettagli

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language) o o o o o DDL (Data Definition Language): consente di creare e modificare schemi di database; DML (Data Manipulation Language): consente di inserire, modificare e gestire i dati memorizzati; DQL (Data

Dettagli

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

Dettagli

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Servlet & JDBC A L B E R T O B E L U S S I A N N O A C C A D E M I C O / Servlet & JDBC 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Basi di dati DB M BG2 Introduzione Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS DB M BG4 D B M G6 2007 Politecnico di Torino 1 D B M G7 D B M G8 D B M G9 D B

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Sistemi informativi 2 Introduzione Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS 4 6 2007 Politecnico di Torino 1 7 8 9 10 Sistema informatico Nei sistemi informatici,

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: JDBC versione 3.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca mecca@unibas.it

Dettagli

Corso di Informatica Modulo T3 B2 - Database in rete

Corso di Informatica Modulo T3 B2 - Database in rete Corso di Informatica Modulo T3 B2 - Database in rete 1 Prerequisiti Programmazione web Applicazione web Modello OSI Architettura client/server Conoscenze generali sui database Tecnologia ADO in Visual

Dettagli

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009 Servlet & JDBC Alberto Belussi anno accademico 2008/2009 Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC (Java Database Connectivity). http://java.sun.com/javase/technologies/database

Dettagli

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate Università degli Studi di Bologna Facoltà di Ingegneria Tecnologie Web L-A A.A. 2017 2018 Esercitazione 08 DAO e Hibernate Agenda Pattern DAO e libreria Hibernate progetto d'esempio relativo alla «gestione

Dettagli

Hibernate Laboratorio

Hibernate Laboratorio Hibernate Laboratorio Programmazione di Applicazioni Data Intensive Laurea in Ingegneria e Scienze Informatiche DISI Università di Bologna, Cesena Giacomo Domeniconi, Gianluca Moro, Roberto Pasolini DISI

Dettagli

Introduzione D B M G

Introduzione D B M G Introduzione D B M G Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS D B M G 2 Gestione delle

Dettagli

Come trattare il risultato di un comando SQL (relazioni) che

Come trattare il risultato di un comando SQL (relazioni) che USO DI SQL DA PROGRAMMI: PROBLEMI Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.

Dettagli

Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS

Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS 2007 Politecnico di Torino 1 Basi di dati DB M B G Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS DB M B G 2 2007 Politecnico

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 2007 Politecnico di Torino 1 Basi di dati Gestione delle informazioni Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS DB M BG2 Gestione delle informazioni Le informazioni sono

Dettagli

Capitolo 9. Sistemi di basi di dati Pearson Addison-Wesley. All rights reserved

Capitolo 9. Sistemi di basi di dati Pearson Addison-Wesley. All rights reserved Capitolo 9 Sistemi di basi di dati 2007 Pearson Addison-Wesley. All rights reserved Capitolo 9: Sistemi di basi di dati 9.1 Definizione di Sistemi di Basi di Dati 9.2 Modello relazionale 9.3 Basi di dati

Dettagli

Sistemi informativi D B M G. Introduzione. Introduzione alle basi di dati D B M G 2. Elena Baralis 2007 Politecnico di Torino 1

Sistemi informativi D B M G. Introduzione. Introduzione alle basi di dati D B M G 2. Elena Baralis 2007 Politecnico di Torino 1 Sistemi informativi D B M G Introduzione D B M G 2 2007 Politecnico di Torino 1 Introduzione D B M G Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi

Dettagli

ESERCITAZIONE: AZIENDA

ESERCITAZIONE: AZIENDA ESERCITAZIONE: AZIENDA Homework 24 ottobre 2002 Emanuel Weitschek emanuel@dia.uniroma3.it Prerequisiti (software) PostgreSQL pgadmin Driver JDBC Ambito Si consideri una base di dati che contiene informazioni

Dettagli

Java SE 7. Introduzione.

Java SE 7. Introduzione. Java SE 7 Introduzione diegozabot@yahoo.it ursula.castaldo@gmail.com Java Java è un linguaggio di programmazione. Inizialmente usato per creare semplici programmi nelle pagine web (chiamati applets), Java

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Corso Programmazione Java Standard

Corso Programmazione Java Standard Corso Programmazione Java Standard Codice: ITJS0113 Durata: 40 ore Descrizione corso Questo corso fornisce una panoramica sulle varie sfaccettature della sintassi del linguaggio Java, integrata con mirate

Dettagli

Basi di Dati Esercitazione JDBC

Basi di Dati Esercitazione JDBC Basi di Dati Esercitazione JDBC 30 Maggio 2006 Ing. Paolo Papotti Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello)

Dettagli

A.s Programma di Informatica

A.s Programma di Informatica A.s. 2008-2009 Programma di Informatica Gli aspetti teorici della disciplina sono suddivisi in 5 moduli: A. Progetto di sistemi informativi B. Basi di dati C. Linguaggi per basi di dati relazionali D.

Dettagli

Piano dei Test e Collaudo del software Titolo Documento

Piano dei Test e Collaudo del software Titolo Documento Controllo delle copie Il presente documento, se non preceduto dalla pagina di controllo identificata con il numero della copia, il destinatario, la data e la firma autografa del Responsabile della Documentazione,

Dettagli

Hibernate. Tool per Object Relational Mapping

Hibernate. Tool per Object Relational Mapping Hibernate Tool per Object Relational Mapping Introduzione Standard JDBC Utilizzo di SQL Non portabilità tra DB Dialetti differenti Scrittura di codice ripetitivo per CRUD Paradigm mismatch Paradigm mismatch

Dettagli

Introduzione alle Basi di Dati

Introduzione alle Basi di Dati Introduzione alle Basi di Dati Angelo Chianese, Vincenzo Moscato, Antonio Picariello, Lucio Sansone Basi di dati per la gestione dell'informazione 2/ed McGraw-Hill Capitolo 1 Appunti dalle lezioni SQL

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: Tecnologie versione 3.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

Entity Framework & SQL Server - Better Together

Entity Framework & SQL Server - Better Together Entity Framework & SQL Server - Better Together Alberto Dallagiacoma @albertodall E-Mail: alberto.dallagiacoma@dotdotnet.org Blog: http://blogs.ugidotnet.org/alby Sponsors Organizers getlatestversion.it

Dettagli

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica Dipartimento Informatica Materia Informatica Classe 5 Tec Ore/anno 198 A.S. 2018-2019 MODULI COMPETENZE UNITA di APPRENDIMENTO Gestione delle informazioni Tot. h 10 Base di Dati Tot. h 56 Grafica in C#

Dettagli

Obiettivo della lezione. Introdurre gli entity beans e le caratteristiche che offrono al programmatore

Obiettivo della lezione. Introdurre gli entity beans e le caratteristiche che offrono al programmatore Obiettivo della lezione Lezione 16 Enterprise JavaBeans (4) Vittorio Scarano Corso di Sistemi Distribuiti (2003-2004) Laurea Specialistica in Informatica Università degli Studi di Salerno Introdurre gli

Dettagli

Viste in MySQL e accesso a DB da Java

Viste in MySQL e accesso a DB da Java Viste in MySQL e accesso a DB da Java LABORATORIO DI BASI DI DATI A.A. 2015/2016 Dott. Claudio Venturini Contenuti parzialmente riadattati e integrati a partire da slide gentilmente concesse dal Dott.

Dettagli

Interfacce DBMS in breve

Interfacce DBMS in breve Interfacce DBMS in breve Corso di BD1 Ripasso comandi applicazione JDBC Manipolazione estensioni OR in JDBC 1 Interfacce per DBMS Problema: Far accedere un applicazione ad una base di dati Soluzione: Librerie

Dettagli

Sommario. Introduzione... 13

Sommario. Introduzione... 13 Sommario Introduzione... 13 1. Database pro e contro... 19 A cosa serve conoscere i database?...19 Le alternative alla gestione manuale...22 Quando non serve un database?...24 Domande ed esercizi...26

Dettagli

MODULO 2. Query normali e parametriche Query di:

MODULO 2. Query normali e parametriche Query di: MODULO 2 TITOLO DBMS e SQL In questo Modulo si affronta lo studio dei DBMS Access e MySQL. In particolare per Access, si descrive come progettare, impostare e modificare gli strumenti di lavoro (tabelle,

Dettagli

DATABASE PER IL WEB. Programmazione Web 1

DATABASE PER IL WEB. Programmazione Web 1 DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca

Dettagli

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori.

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori. Tecnologia delle Basi Dati Analisi del dbms Postgresql. Luigi Cestoni Prima Parte Descrizione del Database Abbiamo realizzato un database costituito da quattro tabelle: 1. dipendente( id,nome,cognome,eta,telefono,idufficio)

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Open Database Connectivity (ODBC)

Open Database Connectivity (ODBC) Open Database Connectivity (ODBC) Open Database Connectivity (ODBC), proposto dalla Microsoft nel 1991, fornisce un interfaccia applicativa standard che permette ad una generica applicazione di accedere

Dettagli

Basi di Dati. Concetti e Principi Generali. Maria Mirto

Basi di Dati. Concetti e Principi Generali. Maria Mirto Basi di Dati Concetti e Principi Generali Maria Mirto Organizzazione dei Dati Archivi o file Procedure di accesso in qualunque linguaggio di programmazione Duplicazione dati: ridondanza incoerenza formati

Dettagli

Jamio openwork data source connector for QlikView

Jamio openwork data source connector for QlikView Questo documento contiene informazioni di proprietà di openwork s.r.l. e deve essere utilizzato esclusivamente in relazione alle finalità per le quali è stato predisposto. È vietata qualsiasi forma di

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo

Dettagli

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

TECN.PROG.SIST.INF. I Socket Roberta Gerboni 2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere

Dettagli

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi. Introduzione a JDBC JDBC (Java Database Connectivity) è la parte delle API di J2SE che fornisce le primitive per la connessione a basi di dati relazionali: si inviano comandi SQL; si recuperano i risultati

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Verso l architettura MVC-2 i JavaBeans

Verso l architettura MVC-2 i JavaBeans Verso l architettura MVC-2 i JavaBeans 1 A L B E R T O B E L U S S I A N N O A C C A D E M I C O 2 0 1 2 / 2 0 1 3 Limiti dell approccio PROGRAMMA UNICO Il programma unico (servlet) svolge tre tipi di

Dettagli

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione Corso di PHP 8.1 PHP e MySQL 1 Prerequisiti Conoscenza MySQL Tecnica della programmazione procedurale ad oggetti Principi di programmazione web Programmazione elementare in PHP 2 1 Introduzione In questa

Dettagli

Introduzione. A Tecnologie 1

Introduzione. A Tecnologie 1 Indice Prefazione Introduzione XIII XIX A Tecnologie 1 1 Tecnologie per applicazioni Web 3 1.1 Introduzione 3 1.2 HTTP e HTML: i fondamenti delle tecnologie Web 4 1.2.1 Accesso a risorse remote: il protocollo

Dettagli

Progettazione Logica e Modello Realizzativo

Progettazione Logica e Modello Realizzativo Progettazione Logica e Modello Realizzativo Metodologia di SI PREFERIBILMENTE ITERATIVA (1) Analisi dei Requisiti (Modello di Business): analisi di scenario, individuando i processi, gli attori coinvolti

Dettagli

Programma Master Programmatore Java

Programma Master Programmatore Java Programma Master Programmatore Java PCAcademy Via Capodistria 12 Tel.: 06.97.84.22.16 06.85.34.44.76 Cell. 393.93.64.122 - Fax: 06.91.65.92.92 www.pcacademy.it info@pcacademy.it Informazioni generali La

Dettagli

Basi di Dati Attive. Basi di Dati Attive

Basi di Dati Attive. Basi di Dati Attive Basi di Dati Passive le politiche di reazione nei vincoli d integrità referenziale sono il primo esempio della necessità di introdurre un comportamento reattivo nelle basi di dati mettendo a fattor comune

Dettagli

Programmazione ad Oggetti

Programmazione ad Oggetti Programmazione ad Oggetti Java Eccezioni Eccezioni in breve Un eccezione è un oggetto che descrive una situazione anomala o di errore L eccezioni vengono lanciate da una parte di un programma e possono

Dettagli