Verso l architettura MVC-2 i JavaBeans

Documenti analoghi
Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans

Basi di dati - Laboratorio

Architettura MVC-2 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Verso l architettura MVC-2

Architettura MVC-2. Alberto Belussi. Anno accademico 2006/2007

Prova scritta del 13 luglio 2010

Laboratorio di Basi di Dati/ Basi di dati per Bioinformatica

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

Laboratorio di Basi di Dati e Web. Docente: Alberto Belussi

Laboratorio di Basi di Dati. Docenti: Alberto Belussi Lezione 7

JDBC: breve riepilogo (1)

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. Alberto Belussi. anno accademico 2008/2009

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

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Introduzione alle JSP

Tecnologie di Sviluppo per il Web

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

Fondamenti di Informatica T-1

Una metodologia di progettazione di applicazioni web centrate sui dati

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

ESERCITAZIONE: AZIENDA

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

Architettura MVC-2 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 /

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 e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Laboratorio di Basi di Dati e Multimedia

Capitolo 5. Soluzione: Soluzione in C:

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

GESTIONE DEGLI ERRORI

Fondamenti di Informatica T-1. Classi e oggetti

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

GESTIONE DEGLI ERRORI

Docente: Alberto Belussi e Carlo Combi. Lezione 4

JAVA Server Side: Web & Other

SQL - Sottointerrogazioni correlate

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Basi di Dati. Esercitazione JDBC 28/05/2007

Laboratorio di Basi di Dati e Web

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Architettura Model-View-Controller (MVC)

Interpretazione delle query nidificate

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

Basi di Dati. Esercitazione JDBC. Ing. Paolo Cappellari

Basi di Dati Esercitazione JDBC

Implementazione dell albero binario in linguaggio C++

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Laboratorio di Basi di dati & Basi di dati per Bioinformatica

Visualizzazione ordini in MyShopDB

La connessione ai database MySQL tramite script PHP versione 5.5

PRIMO MODULO. DURATA: 80 ore CONTENUTI

Fondamenti di Informatica T-1. Classi & Oggetti

Laboratorio di Basi di Dati e Web

Prova d Esame Compito A

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Tipi riferimento e stringhe

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

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE

Programmazione Orientata agli Oggetti in Linguaggio Java

Basi di dati Basi di dati per bioinformatica

Corso di Sviluppo di applicazioni Web

La gestione delle interrogazioni

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 6 MARZO 2015 Tempo: 2h30m

Introduzione Programmazione Java

Programma Master Programmatore Java

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

Tema Esame Informatica Mercurio Gestione della palestra

Corso sul linguaggio Java

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

SQL per le applicazioni D B M G

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

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

Rinaldo Bonazzo Rinaldo Bonazzo, japs incontra Spring Cagliari, 14 Giugno 2008

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

Esercitazione n 2. Obiettivi

Corso sul linguaggio SQL

2011 Politecnico di Torino 1

Laboratorio di Basi di Dati e Web

Basi di dati I 10 settembre 2019 Tempo a disposizione: un ora e 30 minuti. Possibili soluzioni. Cognome: Nome: Matricola:

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

Tecnologie di Sviluppo per il Web

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Programma didattico. Sviluppare Applicazioni Distribuite in ambiente. Spring MVC

SQL per le applicazioni D B M G

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

Basi di Dati. JDBC - Esercitazione n. 4 Quaderno n. 4. Passi preliminari per lo svolgimento delle esercitazioni

Laboratorio di sistemi Information hiding Jsp [Java]

Verso l architettura MVC-2 Java Server Pages (JSP)

Verso l architettura MVC-2 Java Server Pages (JSP)

Laboratorio di Basi di Dati

2011 Politecnico di Torino 1

Esercizio: Lista Circolare

Tecnologie di Sviluppo per il Web

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Transcript:

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 funzioni distinte: Gestione della richiesta HTTP Interazione con il DBMS ed elaborazione dei dati estratti Presentazione dei dati elaborati nella pagina web scritta in HTML (struttura dell informazione e aspetti grafici) Tale situazione implica un costo elevato di manutenzione del codice. 2

Verso l architettura MVC-2 Il primo passo verso l architettura MVC-2 è quello di separare l interazione con il DBMS dall elaborazione e presentazione dei dati. Programma unico 3 Modulo per la presentazione dei dati Modulo per l interazione con il DBMS

Verso l architettura MVC-2 Nel contesto JAVA (Servlet + JDBC) 4 Servlet UNICA SERVLET per la presentazione dei dati Classi JAVA per l interazione con il DBMS via JDBC

Verso l architettura MVC-2 5 Come si trasferiscono i dati estratti dal DBMS alla servlet per l elaborazione e la presentazione? Modulo per la presentazione dei dati Oggetti/Strutture dati che seguono regole prestabilite Modulo per l interazione con il DBMS

Verso l architettura MVC-2 6 Nel contesto JAVA (Servlet + JDBC) SERVLET per la presentazione dei dati JAVA DATA BEANS Classe JAVA per l interazione con il DBMS

JavaBeans Un Java Bean è un componente nella tecnologia Java. Con il termine componente si indicano essenzialmente quelle classi che possono essere utilizzate in modo standard in più applicazioni. Lo scopo dei componenti infatti è dare la possibilità di riutilizzare in modo sistematico gli oggetti in contesti diversi, aumentando la produttività. La definizione di Java Bean è volutamente generica. Un Java Bean è semplicemente una classe Java che risponde a due requisiti: ha un costruttore con zero argomenti; soddisfa una serie di direttive relative ai suoi metodi e alle sue variabili. 7

JavaBeans: metodi getter 8 Una classe Java per essere utilizzata come Java Data Bean deve essere scritta seguendo le seguenti direttive: Deve implementare un costruttore senza argomenti. Esempio: PersonaBean(); Per ciascuna proprietà della classe che si vuole rendere visibile, deve essere implementato un metodo di nome getnomeprop() dove NomeProp è il nome della proprietà (con le iniziali maiuscole). Esempio: se una classe Java Bean ha una proprietà numerotelefono il metodo dovrà essere getnumerotelefono().

JavaBeans: metodi setter 9 Per ciascuna proprietà della classe che si vuole rendere modificabile, deve essere implementato un metodo setnomeprop(classeprop v) dove NomeProp è il nome della proprietà (con le iniziali maiuscole) e ClasseProp è il tipo della proprietà. Esempio: se una classe Java Bean ha una proprietà numerotelefono di tipo String, il metodo dovrà essere setnumerotelefono(string value). Inoltre per consuetudine si usa nominare la classe con il suffisso Bean. Esempio: PersonaBean

JavaBeans nell interazione con un DBMS 10 Un Java Data Bean risulta essere il miglior componente per rappresentare in un oggetto Java una tupla restituita da un interrogazione SQL e contenuta in un ResultSet A tal fine, il Bean deve contenere: 1. tante variabili private quanti sono gli attributi della tupla; 2. un costruttore di default che inizializza agli attributi; 3. i metodi pubblici di accesso getter e setter per gli attributi che si vogliono esporre (di solito tutti).

JavaBeans nell interazione con un DBMS 11 Persona CodiceFiscale Cognome Nome Id public class PersonaBean { private String CF, cognome, nome; private int id; PersonaBean() { CF = cognome = nome = ; id = -1; } public String getcf() { return CF; } public void setcf(string c) { CF = c; } }

Lavorare con i Bean (1) 12 Non sempre il mapping uno a uno tra gli attributi di una tabella e le proprietà di un bean risulta essere il migliore approccio. Nel caso di interrogazioni che eseguono join tra più tabelle è conveniente includere nel bean attributi provenienti da più tabelle. Ad esempio: Insegn id nomeins JOIN InsErogato id_insegn annoaccademico

Lavorare con i Bean (2) 13 Considerando il caso mostrato nell'esempio del lucido precedente, è necessario: Definire una classe Java Bean per rappresentare il risultato dell interrogazione che esegue un join tra la tabella InsErogato e la tabella Insegn. Chiamiamo tale classe InsErogatoBean. E inoltre consigliabile includere nel bean come proprietà non solo gli attributi della tabella InsErogato, ma anche gli attributi di Insegn a cui si è interessati; ad esempio l'attributo nomeins può essere incluso e di conseguenza vanno definiti i metodi getnomeins e setnomeins nella classe InsEreogatoBean.

Verso l architettura MVC-2: Java Data Beans 14 Parliamo di Java Data Beans quando i Java Beans vengono usati per la gestione del risultato di interrogazioni su una base di dati. I Java Data Bean sono quindi dei componenti fondamentali nella strutturazione di una applicazione web centrata sui dati secondo l architettura MVC-2. I Java Data Bean, insieme ad una o più classi Java, permettono di separare la logica dell applicazione dalla parte di controllo e di presentazione delle informazioni.

Verso l architettura MVC-2: Java Data Beans 15 Livello di controllo e di presentazione Logica dell applicazione Servlet 1) Richiesta dati Classe Java 2) Esecuzione interrogazione 3) Result Set DBMS 5) Return Java Data Beans 4) Creazione Java Data Beans Java data beans Base di dati

Verso l architettura MVC-2: Java Data Beans 16 La parte logica dell'applicazione è realizzata da un insieme di classi Java e un insieme di Java Data Bean che realizzano le interrogazioni e memorizzano i risultati delle interrogazioni. Ad esempio, in una certa applicazione, tutte le interrogazioni che si possono fare alla base di dati possono essere raggruppate in un'unica classe, che fornirà i Java Data Bean (o Vector di Java Data Bean) ottenuti come risultato di un'interrogazione. Il livello di presentazione e di controllo del flusso di esecuzione è realizzato dalle servlet che: analizzano la richiesta HTTP, richiedono alla parte logica i Java Data Bean necessari per formare il documento di risposta e preparano il codice HTML da restituire al browser.

Verso l architettura MVC-2: Java Data Beans 17 Assumiamo di chiamare la classe Java che gestisce l interazione con il DBMS: DBMS.java. Una possibile struttura di questa classe è la seguente: Il costruttore di default deve caricare il driver JDBC del DBMS al quale ci si deve connettere. Ci devono essere tanti metodi (getxxx o extractxxx) quante sono le interrogazioni che si vogliono gestire. Ogni metodo getxxx deve: Creare un oggetto connection per la connessione con il DBMS; Associare eventuali parametri d'input con i parametri dell interrogazione; Eseguire l interrogazione; Creare un Java Data Bean o un Vector di Java Data Bean con i dati ottenuti dal DBMS e restituirlo.

Verso l architettura MVC-2: Java Data Beans Per strutturare meglio la classe DBMS.java è opportuno creare dei metodi che, dato un ResultSet, restituiscono il Java Data Bean (JDB) che rappresenta una riga del ResultSet. 18 Ad esempio nel caso visto in precedenza dovrà essere definito nella classe DBMS il metodo makepersonabean, che, dato un ResultSet estratto dalla tabella Persona, restituisce un bean contenente i dati della riga corrente del ResultSet.

Verso l architettura MVC-2: Java Data Beans private PersonaBean makepersonabean(resultset rs) throws DBMSException { bean = new PersonaBean(); try { bean.setid(rs.getint("id")); bean.setcognome(rs.getstring( cognome")); bean.setnome(rs.getstring( nome )); bean.setcf(rs.getstring( codfiscale )); return bean; } catch (SQLException e) { throw new DBMSException(e.getMessage()); } } INTERROGAZIONE SQL: SELECT id, cognome, nome, codfiscale FROM Persona WHERE id=? 19

Java Data Beans: progettazione 20 Se si decide di rappresentare con un JDB diverso ogni possibile tupla risultato di un interrogazione, è possibile che il numero di JDB da definire cresca in modo significativo. Un approccio alternativo consiste nel definire JDB che possono contenere diverse versioni (con più o meno attributi) delle tuple ottenute come risultato delle interrogazioni. Ciò si può ottenere creando inizialmente alcuni JDB che corrispondono alle principali entità della base di dati e arricchendo tali JDB con le proprietà necessarie alle varie interrogazioni da eseguire.

Verso l architettura MVC-2: Java Data Beans 21 Interazione DBMS e ambiente JAVA con JDB Classe Java DBMS ResultSet getxxx() DBMS makexxxbean() Java data beans Base di dati