Object-Relational Mapping



Похожие документы
Object-Relational Mapping

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

I Sistemi Informativi

Progetto di Applicazioni Software

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Introduzione al mondo della persistenza. Dott. Doria Mauro

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

Progetto di Applicazioni Software

Progettaz. e sviluppo Data Base

Informatica (Basi di Dati)

Progetto di Applicazioni Software

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Modellazione dei dati in UML

Corso di Informatica (Basi di Dati)

Progettazione di Basi di Dati

1. BASI DI DATI: GENERALITÀ

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

La Metodologia adottata nel Corso

Introduzione ai database relazionali

Strumenti di modellazione. Gabriella Trucco

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

DBMS (Data Base Management System)

Il Modello Relazionale

Progetto di Applicazioni Software

Capitolo 13. Interrogare una base di dati

A.S. 2010/2011 M070 - ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE

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

Architettura MVC-2: i JavaBeans

BASI DI DATI - : I modelli di database

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

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Programmare in ambiente Java Enterprise: l offerta formativa di Infodue

Informatica Documentale

Programmazione Java Avanzata Spring - JDBC

Progettaz. e sviluppo Data Base

Lo schema concettuale risultante dalla progettazione concettuale è l input alla fase di progettazione logica.

Corso di Basi di Dati e Conoscenza

Realizzazione di una classe con un associazione

In legenda sono riportate le fasi R, P, C/T e I/SA come specificato nella norma ISO/IEC

Object Oriented Programming

DB - Modello relazionale dei dati. DB - Modello Relazionale 1

UML Diagrammi delle classi. UML Diagramma classi 1

SWIM v2 Design Document

Caratteristiche principali. Contesti di utilizzo

Progettazione della componente applicativa

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Lezione 1. Introduzione e Modellazione Concettuale

Architetture software

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Al giorno d oggi, i sistemi per la gestione di database

Database. Francesco Tapparo Informatica e Bioinformatica /16

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

PROGRAMMAZIONE MODULARE. Periodo mensile. Ore previste

Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali

Database. Si ringrazia Marco Bertini per le slides

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

Università degli Studi di Roma La Sapienza, Facoltà di Ingegneria

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Le Basi di dati: generalità. Unità di Apprendimento A1 1

Access. P a r t e p r i m a

Organizzazione degli archivi

DATABASE.

Object Oriented Software Design

UNIVERSITA DEGLI STUDI DI BRESCIA Facoltà di Ingegneria

CONTENT MANAGEMENT SYSTEM

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

BASE DI DATI: sicurezza. Informatica febbraio ASA

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Alessandra Raffaetà. Basi di Dati

Base di dati e sistemi informativi

Progettazione di una base di dati Ufficio della Motorizzazione

Basi di dati 9 febbraio 2010 Compito A

Informatica per le discipline umanistiche 2 lezione 10

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Facoltà di Farmacia - Corso di Informatica

Protezione. Protezione. Protezione. Obiettivi della protezione

Programmi e Oggetti Software

Progettazione e realizzazione di un applicativo Web Annunci Immobiliari

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

MODELLO RELAZIONALE. Introduzione

Introduzione alla teoria dei database relazionali. Come progettare un database

UML Component and Deployment diagram

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Una metodologia di progettazione di applicazioni web centrate sui dati

L architettura di un DBMS

Introduzione all Architettura del DBMS

SISTEMI OPERATIVI DISTRIBUITI

Lezione 9. Applicazioni tradizionali

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Транскрипт:

Object-Relational Mapping Versione Preliminare Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2008-2009 Questi lucidi sono stati prodotti sulla base del materiale preparato per il corso di Progetto di Basi di Dati da D. Lembo e A. Calì.

Approccio Object-Oriented (OO) Approccio Object-Oriented (OO), basato cioè sull uso di linguaggi ad oggetti quali ad es. C++, Java, etc., è ad oggi l approccio/paradigma più consolidato ed usato per la realizzazione di applicazioni Le metodologie di progettazione OO prevedono l uso di linguaggi di modellazione concettuale, come UML, che offrono un supporto fondamentale per progettare gli strati di logica dell applicazione e di interfaccia utente di un qualsiasi sistema informatico A. Poggi 1

Approccio Object-Oriented (OO) e persistenza Un sistema informativo che non preserva dati al suo spegnimento è di poca utilità I linguaggi di programmazione OO non offrono soluzioni native al problema della persistenza, ovvero al problema della gestione di dati persistenti da parte di applicazioni OO A. Poggi 2

DBMS relazionali I DBMS relazionali sono ad oggi la tecnologia più consolidata, efficiente e comunemente usata per la gestione di grandi quantità di dati Offrono solo qualche ausilio alla programmazione procedurale di applicazioni (e.g. stored procedure) Non sono specifici di alcun paradigma di programmazione, n in generale, di alcuna applicazione principio noto come data independence, ovvero in generale, i dati vivono più a lungo di qualsiasi applicazione A. Poggi 3

Binomio (applicazione OO - DBMS relazionale) Necessità di risolvere il problema della persistenza in applicazione OO mediante l uso di DBMS relazionali, ovvero di permettere alle applicazioni di gestire dati memorizzati in memoria secondaria in un DBMS relazionale Problema: il paradigma OO si è sviluppato su principi propri dell ingegneria del software, quello relazionale affonda le radici su principi matematici, e le differenze fra i due risultano considerevoli A. Poggi 4

Impedance mismatch tra modello OO e relazionale Impedance mismatch è un termine preso in prestito dall ingegneria elettrica per denotare la mancata corrispondenza tra modello OO e relazionale Modello OO: descrive il dominio in termini di oggetti e loro proprietà, che possono essere attributi (i.e. valori) o associazioni ad altri oggetti Modello relazionale: descrive il dominio in termini relazioni tra valori A. Poggi 5

L implementazione di un applicazione ad oggetti è basata sull uso di un linguaggio di programmazione OO l implementazione di una base di dati è basata sull uso di un linguaggio relazionale (l algebra) abbiamo il problema di far colloquiare l applicazione che parla in termini di oggetti con un DBMS che parla in termini di valori per far coesistere applicazioni ad oggetti e DBMS relazionali occorre uno sforzo sia progettuale che implementativo A. Poggi 6

Differenze fondamentali 1. Coesione In un oggetto, tutte le sue proprietà sono contenute nell oggetto medesimo i dati relazionali corrispondenti ad una stessa entità possono essere stati splittati in più tabelle, e.g. a seguito della fase di ristrutturazione dello schema logico 2. Incapsulamento In un oggetto, la business logic risiede (parzialmente) nei metodi dell oggetto stesso i dati relazionali e la logica che li governa sono implementati in maniera separata A. Poggi 7

3. Granularità dei tipi di dato Tipi di dati composti sono tipicamente rappresentati nei linguaggi OO mediante apposite classi di oggetti con loro proprietà, mentre l SQL non prevede alcun meccanismo standard per la definizione di tipi di dato composti la classe Indirizzo farà tipicamente parte delle classi di dominio e qualsiasi oggetto con proprietà di tipo Indirizzo parteciperà ad un associazione con essa, mentre le informazioni che compongono un indirizzo quali la via, il numero civico e il CAP saranno loro stesse tipicamente attributi dell entità avente come proprietà il corrispondente indirizzo A. Poggi 8

4. Ereditarietà e Polimorfismo Nei linguaggi OO l ereditarietà è implementata attraverso l uso di supere sotto-classi, e fornisce inoltre la possibilità del polimorfismo il modello relazionale non ha la possibilità di rappresentare ereditarietà e associazioni polimorfiche: in particolare, l ereditarietà è simulata attraverso la replicazione di dati e l uso di vincoli di integrità, mentre non esiste alcun meccanismo per simulare il polimorfismo A. Poggi 9

5. Identità Nei linguaggi OO esistono due nozioni di identità: identità fisica di oggetti, ovvero di locazioni di memoria in cui gli oggetti sono memorizzati, e identità semantica, implementata attraverso la definizione del metodo equals l identità di una tupla è implementata attraverso l uso della chiave primaria e non corrisponde direttamente a nessuna delle due nozioni di cui sopra 6. Navigabilità Nei linguaggi OO il dominio si naviga da un oggetto all altro, attraverso le associazioni, ovvero secondo la responsabilità delle classi che partecipano all associazione (Ricorda: a partire da un oggetto si possono accedere gli oggetti con cui partecipa ad una associazione solo se ha responsabilità su di essa) l accesso ai dati relazionali avviene mediante l uso di join tra tabelle A. Poggi 10

Object-relational mapping La soluzione al problema della persistenza richiede un mecanismo per specificare la corrispondenza tra il dominio dell applicazione e la base di dati che risolva opportunamente il problema dell impedance mismatch Tale meccanismo è comunemente chiamato object-relational mapping (ORM) Idea: si identificano le classi di oggetti dell applicazione di tipo persistente e si fa in modo che i loro attributi e proprietà siano mappati su dati memorizzati in una base di dati relazionale Su tali oggetti saranno definite ed invocate operazioni di creazione, modifica, cancellazione, con l obiettivo di effettuare letture e modifiche sulla base dati sottostante A. Poggi 11

Richiami: architetture a 3 livelli per le applicazioni Presentation layer Application logic layer Application logic layer Resource management layer A. Poggi 12

Architettura in termini di applicazioni OO e DBMS relazionali User Interface Classes Controller Classes Domain Classes Utility Classes ORM Data Store A. Poggi 13

Architettura dell applicazione Persistence classes gestiscono l accesso ai dati, incapsulando le modalità di accesso Domain classes (Business Objects) Sono le classi che rappresentano i concetti pertinenti al dominio dell applicazione. Ogni classe deve incorporare il comportamento specifico delle sue istanze. Controller Classes Le classi di controllo incorporano la logica di business. Le operazioni implementate in una classe di controllo possono coinvolgere più di una domain class ed eventualmente altre classi di controllo. A. Poggi 14

Architettura dell applicazione User Interface Classes Sono le classi che incorporano l interfaccia offerta direttamente all utente. Utility Classes Ogni applicazione ha un insieme infrastrutturale di classi, chiamate Utility classes, che sono usate ad ogni livello dell applicazione (e.g. Class Exception) A. Poggi 15

Diverse strategie ORM Strategie possibili: 1. Forza bruta 2. Codifica manuale di uno strato per l ORM oggetti per l accesso ai dati (Data Access Objects, DAO) 3. Persistence framework A. Poggi 16

ORM: forza bruta Prevede di equipaggiare le classi dell applicazione (in particolare le classi di dominio) con metodi che interagiscono direttamente con la base di dati, ovunque necessario, ovvero incorpora la logica di accesso ai dati sul DB nelle domain classes e nelle controller classes È ragionevole quando l applicazione è sufficientemente semplice e si può fare a meno di uno strato di incapsulamento (persistence classes) A. Poggi 17

ORM: forza bruta (cont.) Un oggetto di una classe di business si popola con i dati presenti in un database (acceduto ad es. attraverso driver JDBC), procedendo come segue: costruisce da sé lo statement SQL necessario; lo passa al driver; riceve i risultati dal database; li elabora opportunamente. A. Poggi 18

ORM: forza bruta - svantaggi Non è una strategia di incapsulamento Accoppia fortemente lo strato delle domain classes e dei controller al database Richiede che chi progetta l applicazione abbia conoscenza dettagliata del database A. Poggi 19

ORM Forza bruta: esempio Persona Nome: stringa Cognome: stringa Nascita: data Coniugato: boolean Reddito: intero Aliquota(): intero Eta(): intero Open() Save()... Lavora_in 0..1 Azienda RagioneSociale: stringa PartitaIva: stringa CapitaleSociale: intero Dimensione(): stringa Aumenta(intero x) Diminuisci(intero x) Open() Save()... Nelle classi che modellano oggetti del dominio, si potrebbe avere un metodo per popolare un oggetto con i dati del DB (Open()), o per rendere persistenti i cambiamenti effettuati sull oggetto (Save()), etc. A. Poggi 20

Forza bruta (cont.) Leggere un singolo oggetto dal DB customer: Customer buildselect Select Resut setdatavalues A. Poggi 21

Forza Bruta Questo approccio è da evitare. Infatti, in tal modo si offre un canale diretto dalla logica dell applicazione al DB, che viola così: interfacciamento esplicito: non è definito in maniera chiara il passaggio di informazione fra l applicazione ed il DB information hiding: non nascondo all applicazione i dettagli della base dati A. Poggi 22

ORM: DAO Prevede di realizzare uno strato dell applicazione (chiamato appunto DAO) demandato completamente a gestire la comunicazione fra l applicazione ed il DBMS anche in questo caso il mapping è realizzato manualmente attraverso l uso di JDBC/SQL l accesso al DB viene però opportunamente incapsulato nelle classi DAO: nasconde alla logica di business codice JDBC complesso e SQL non-portabile fornisce un interfacciamento esplicito del codice migliora la modularità, risolve problemi di accoppiamento tipici dell approccio forza bruta A. Poggi 23

ORM: DAO (Cont.) Un oggetto di una classe di business, per accedere al database invoca metodi di una classe demandata a gestire gli accessi al DB (relativamente alle informazioni richieste) è questa classe che costruisce lo statement SQL e lo passa al driver, riceve i risultati dal database e li inoltra alla classe di business che la ha interrogata la classe di business effettua poi le sue elaborazioni sui dati ricevuti A. Poggi 24

ORM: DAO esempio Leggere un singolo oggetto dal DB customer: Customer data: CustomerData read(customer) getkeyvalues keyvalues buildselect Select setdatavalues Resut A. Poggi 25

ORM: DAO (cont.) Tutta la logica di accesso al DB è completamente incapsulata nelle classi DAO Cambiamenti del DB influenzano solo le DAO La classe CustomerData si fa carico di gestire il codice SQL, mentre tutto ciò è trasparente rispetto alla classe Customer (che è una domain class), la quale invoca metodi indipendenti dal DB L approccio tipico è quello di avere un DAO per ciascuna domain class A. Poggi 26

ORM:Persistence Framework prevede l utilizzo di un framework predefinito (ad es. Hibernate) per la gestione della persistenza l obiettivo è liberare il programmatore quanto più possibile dalla necessità di scrivere codice SQL nella sua applicazione. il codice SQL viene generato automaticamente sulla base di informazioni di meta-livello fornite dal programmatore (ad es. all interno di file di configurazione) incapsulamento completo: il programmatore vede il DB solo quando configura il framework A. Poggi 27

ORM: Persistence framework (cont.) Un persistence framework incapsula pienamente la logica di accesso al DB Dei meta-dati rappresentano la corrispondenza tra domain classes e tabelle, nonché le associazioni tra le domain classes A. Poggi 28

ORM: Persistence framework (cont.) Offrono funzionalità di base (CRUD) altre funzionalità: transazioni gestione della concorrenza caching A. Poggi 29

ORM: Persistence Framework (cont.) customer: Customer p: PersistenceFramework map:mappingclass read(customer) getkeyvalues keyvalues getmaps maps buildselect setdatavalues Select Resut A. Poggi 30

Riepilogo Forza bruta Vantaggi: semplicità rapidità di sviluppo possibilità di accedere a DB mal progettati o pre-esistenti all applicazione A. Poggi 31

Riepilogo (cont.) Forza bruta Svantaggi: accoppiamento diretto tra applicazione e DB chi sviluppa l applicazione deve conoscere dettagli sul DB difficile modifica del DB difficile riuso dell applicazione A. Poggi 32

Riepilogo (cont.) DAO Vantaggi: incapsulamento possibilità di accedere a DB mal progettati o pre-esistenti all applicazione facilità di riuso dell applicazione minore accoppiamento fra le classi di dominio (solo dovuto alle dipendenze esplicitate dal class diagram) A. Poggi 33

Riepilogo (cont.) DAO Svantaggi: c è ancora accoppiamento tra persistence classes e DB chi sviluppa l applicazione (le persistence classes) deve conoscere dettagli sul DB può essere dipendente dalla tecnologia A. Poggi 34

Riepilogo (cont.) Persistence Framework Vantaggi: chi sviluppa l applicazione non deve conoscere dettagli sul DB Facilità di cambiare la corrispondenza tra oggetti e DB (in seguito a scelte dovute alle prestazioni) facilità di riuso dell applicazione e anche del persistence framework A. Poggi 35

Riepilogo (cont.) Persistence Framework Svantaggi: difficoltà di accedere a DB mal progettati decremento delle prestazioni (specie se il framework non è costruito con accortezza) può essere dipendente dalla tecnologia A. Poggi 36

Per il progetto da realizzare Si deve realizzare il progetto di un piccolo sistema informativo, costituito da: una base di dati relazionale, interrogabile mediante SQL una applicazione Java che si interfaccia alla base di dati attraverso JDBC L approccio con Hibernate è quello richiesto se possibile, altrimenti è richiesto l approccio DAO A. Poggi 37

Nota importante Il problema del disallineamento esiste sia tra il dominio delle classi dell applicazione e lo schema ER, sia tra le classi UML dell applicazione e lo schema ER disallineamento sul trattamento delle generalizzazioni se si segue la metodologia di progettazione vista nel corso di Progettazione del Software, nella fase di progetto, sono definite delle classi Java per realizzare tipi UML, e.g. Indirizzo classi UML di tipo TipoLink non hanno una corrispondenza in ER A. Poggi 38