Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Appunti di Informatica, Appunti di Informatica

Appunti di Informatica - Persistenza

Tipologia: Appunti

2015/2016

Caricato il 22/10/2021

amila.fernando92
amila.fernando92 🇮🇹

5

(5)

6 documenti

1 / 49

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
AA 2009-2010
Persistenza
Applicazioni Enterprise
Uso dei modelli
UNIVERSITA’ DI FIRENZE
Facoltà di Ingegneria
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31

Anteprima parziale del testo

Scarica Appunti di Informatica e più Appunti in PDF di Informatica solo su Docsity!

AA 2009-

Persistenza Applicazioni Enterprise Uso dei modelli

UNIVERSITA’ DI FIRENZE^ Facoltà di Ingegneria

IL problema della persistenza • I programmi trattano oggetti^ •^ (Stato, comportamento, associazioni) • La base di dati è AA 2009-

fatta di tabelle

APPLICAZIONE^ (programmi)^ (oggetti) • (valori, relazioni )

DATIPERSISTENTI (file, record) (basi di dati)

AA 2009-

Struttura a livelli

Logicaapplicativa A cosa ci vogliamoportare nel Dominio

AA 2009-

Terminologia

-^ Data Object^ •^ Sono le entità

proprie del dominio applicativo

-^ ESEMPI: Fattura, Ordine, Cliente, Impiegato, Prestito,Escursione, Documento, Prenotazione, Pagamento, ecc. •^ Spesso vengono anche indicati come

Value Object

(o

Business object

-^ Service Object^ •^ Sono gli oggetti che implementano la logica applicativa^ •^ ESEMPI: Gestore degli ordini, Controllo Pagamenti,Assegnazione lavoro, Registrazione prenotazione, ecc.^ •^ Indicati anche come Applicative Object, Managers, ControlObjects

(?), ecc.

….Un modo elementare Se ci basta un file system AA 2009-

(non una vera base dati)

-^ Serializzazione (Java)^ •^ Salva/recupera l’intero grafo degli oggetti (con tutti i loroattributi ecc.)^ •^ Un po’

ostica da manegiare

-^ Uso di librerie, p.e. XStream^ •^ Si appoggia sulla serializzazione di Java^ •^ Genera file XML contenenti il grafo degli oggetti^ •^ Costruisce un grafo di oggetti a partire dal file XML(conforme)

XML AA 2009-

(Extended

markup Language)

-^ Esempio (da wikipedia) <?xml^ version="1.0"

encoding="UTF-8"?> ^ ^ LucaRuggeroMilano^ ^ ^ Max^ RossiRoma^

Vediamolo!

AA 2009-

Mismatch

Mappatura AA 2009-

(impedance

mismatch)^ Mondo RDB

Mappatura Mondo OO • Va bene per relazioni 1:

e 1:N

-^ Nel caso di relazione N:N ci vuole una tabella di incrocio

  • Soluzione (obiettivo) AA 2009-

AA 2009-

Mappatura

-^ Manuale

: Il codice SQL per l’accesso ai dati viene

prodotto manualmente dal programmatore eintegrato nell’applicazione • Automatica

: Attraverso i metadati di mappatura il

livello di persistenza provvede ad accederedirettamente ai dati (genera automaticamente ilcodice SQL necessario)

AA 2009-

ODBC/JDBC

-^ ODBC (Open Data BaseConnectivity): API standarddi connessione ai DBMS(linguaggio C) •^ JDBC: versione di ODBC perprogrammi in Java •^ Richiedono un “driver”^ specifico per ogni distintoDBMS (Oracle, MySQL, …)

Mappatura manuale con JDBC • JDBC: API standard di JAVA verso il DBMS relazionale (uso diSQL) • Accesso alla base dati: • Apertura di una connessione verso la base di dati (istanziazione^ dell'oggetto AA 2009- con^ )

-^ Preparazione di uno statement SQL (istanziazione

dell'oggetto

stmt) • Esecuzione della query

(tramite il metodo

executeQuery()

di

stmt )^ ottenendo

unresult^ set

.

-^ Statement

stmt^ =^ con.createStatement(); resultSet

rs^ =^ stmt.executeQuery("select

*****^ from PARTECIPANTE");

Esempio AA 2009-

(rif. Agenzia)

-^ Nell’applicazione: Partecipante

p^ =^ agenzia.getPartecipante(“BCC...”)

-^ Bisogna inserire linee di codice entro Agenzia perrecuperare gli oggetti dal DB (persistenza attraverso

i

Data Objects

(Agenzia)

-^ E’una soluzione invasiva

: le entità

di dominio

vengonosporcate dal codice di persistenza, violandola separazione tra il livello di dominio e quello dipersistenza

AA 2009-

…Esempio

public^ Partecipante

getPartecipante(String

cF){

Statement

stmt^ =^ con.createStatement(); ResultSet

rs^ =^ stmt.executeQuery("select

from^ PARTECIPANTE"); while (rs.next()){ String cFx^ =^ rs.getString("CF");if (cFx^ ==^ cF)^

Partecipante

p^ =^ new^

Partecipante(cF); p.setName(rs.getString("NAME"));return^ p; } } return^

null;

-^ Cosa serve in Agenzia^ }

Meglio evitare!

L’oggetto di dominio è Ma come?

stato stravolto