In data Mercoledì 13 Giugno 2012 in aula 4, dalle 9:00 alle 10:30,il dott. Alessandro Forte della T.&C. Systems Group s.r.l. ha tenuto un seminario sull'Object-Relational Mapping.
Il dott. Forte è attualmente SW Architect per la T.&C. Systems Group s.r.l. e speaker certificato Microsoft Italia.
Si è trattato di un'importante occasione per affacciarsi a nuovi argomenti di interesse del mondo produttivo e allo stesso tempo entrare in contatto con una società attiva sul territorio. Si ringrazia il prof. Antonio Maratea per l'occasione concessa e la disponibilità dimostrata.
1. Alessandro Forte
SW Architect @ T&C Group
MCP – MCTS
http://www.alessandroforte.it/blog
info@alessandroforte.it
2. Alessandro Forte
Software Architect @ T&C Group
DotNetCampan
ia Founder
Contatti
WebSite: http://www.alessandroforte.it/
Blog: http://www.alessandroforte.it/blog/
E-Mail: informazioni@alessandroforte.it
Prossimo Speech
BBCC - Biology, Bioinformatics and Computation in
Campania Napoli, 27/09/2012
Compra il mio libro
3. Agenda della giornata:
o ORMs
o OR Impedance Mismatch
o DAL
o Entity Framework
o DEMO (Creiamo un EDM)
o DEMO (Consumiamo un EDM)
o QAT
4.
5. “Object-relational mapping (ORM, O/RM, and O/R mapping) in
computer software is a programming technique in which a metadata
descriptor is used to connect object code to a relational database”.
Object code is written in object-oriented programming (OOP) languages
such as Java or C#.
Gli Oggetti sono GERARCHICI I Database sono RELAZIONALI
6. “Object-Relational Impedance Mismatch” è un modo elegante di dire che
gli Object Models e i Relational Models non lavorano molto bene tra di
loro.
Gli RDBMSs rappresentano I dati in un “formato tabellare”, mentre I
linguaggi di programmazione object-oriented, come Java e C#,
rappresentano I dati come “grafi di oggetti” interconnessi tra di loro.
Il caricamento e la memorizzazione di grafi di oggetti usando la
notazione tabellare dei database relazionali ci espone ad almeno 5
problemi di “disallineamento”
8. Spesso ci troviamo nel caso in cui il nostro Object Model ha (mappa) più
classi rispetto al numero corrispondente di tabelle nel database.
public class Teacher{
}
public class School{
}
10. L’ereditarietà è un paradigma “naturale” nei linguaggi di programmazione
orientati agli oggetti.
Negli RDBMS invece non abbiamo nulla che possa essere paragonato al
concetto di ereditarietà.
User
Inheritance
Student Teacher
14. Le associazioni sono rappresentate come un riferimento unidirezionale nei
linguaggi orientanti agli oggetti. Infatti se si necessita di una relazione
“bidirezionale”, è necessario definire due volte l’associazione.
Gli RDBMS invece utilizzano il concetto delle Foreign Keys che è
intrinsecamente bi-direzionale.
Class user_main {
Teacher teacher;
}
Class Teacher {
}
16. Una delle maggiori "differenze" tra i database relazionali e i linguaggi OO risiede nella
tipologia dei Tipi utilizzati.
Il modello relazionale infatti proibisce in maniera "stretta" attributi (o puntatori) per
referenza, al contrario di ciò che fanno invece i linguaggi OO.
String Varchar(150)
Date DateTime
Decimal Money
Caso emblematico è caratterizzato dal tipo Stringa.
Molti sistemi SQL costringono a definire per le stringhe una lunghezza massima,
mentre la maggior parte dei linguaggi OO dimensiona automaticamente le stringhe
con la memoria disponibile.
17.
18. Object Relational Mapping, è una tecnica che
consente ai linguaggi di programmazione orientati agli
oggetti di lavorare “bene” con i database relazionali.
Object world Relational
world
User
Stu Mapping
A…
B..
19. Esistono molti ORMs sul mercato
LLBLGen Pro http://www.llblgen.com/
Nhibernate http://www.hibernate.org/343.html
EntitySpaces
http://www.entityspaces.net/Portal/Default.aspx
Open Access http://www.telerik.com/products/orm.aspx
DevForce http://www.ideablade.com/
XPO http://www.devexpress.com/Products/NET/ORM/
Lightspeed
http://www.mindscape.co.nz/products/LightSpeed/default
.aspx
e molti altri ancora…
Non c’è un “vincitore” assoluto = gli ORM sono di “recente”
utilizzo
◦ Nel 2003 erano presenti 31 .NET ORMs.
◦ Oggi ce ne sono alcuni cardine su cui si estendono gli altri….
20. Typed Datasets (cough) – rilasciato nel 2002
ObjectSpaces “v1” – MAI rilasciato
ObjectSpaces “v2” – MAI rilasciato
Microsoft Business Framework – MAI rilasciato
WinFS – MAI rilasciato
Entity Framework 1
◦ LINQ to SQL – rilasciato nel Novembre del 2007
Visual Studio 2008 & .NET Framework 3.5
◦ LINQ to Entities – rilasciato nell’Agosto del 2008
Visual Studio 2008 SP1 & .NET Framework 3.5 SP1
Entity Framework 4 – rilasciato nel Aprile del 2010
◦ Visual Studio 2010 & .NET Framework 4.0
Entity Framework 5 RC
◦ Visual Studio 2011 & .NET Framework 4.5 Beta
23. ◦ Velocità di Sviluppo.
Una su tutte…Elimina la scrittura di codice ripetitivo
come il mapping dei campi di una query result sulle
proprietà di un oggetto e viceversa.
◦ Supporto OO per l’incapsulamento delle business
rules all’interno del proprio DAL (meglio BL ).
Si scrivono (e si debuggano) le regole di business nel
linguaggio di preferenza, invece di utilizzare “milioni”
di trigger e “miliardi” di stored procedures.
24. ◦ Rende l’accesso ai dati più astratto e portabile.
Le classi di implementazione dell’ORM conoscono
come scrivere vendor-specific SQL, così addio
“traduzione”.
◦ Generazione di codice “standard” per le operazioni
CRUD (Create, Read, Update, Delete).
Alcuni ORM frameworks ispezionano direttamente I
metadata dei database, leggono i metadata mapping
files, e generano classi e metodi...
26. 300 tabella = 1200 operazioni CRUD = 1200 Sprocs
Sapete cosa significa?
• Fate voi …
27. Svantaggi di un ORM
◦ Bassa capacità di Interrogazione
Genera un wrap di SQL (poco ottimizzabile)
◦ Riduzione del codice SQL
Finché parliamo di CRUD è ok.
Ma su query complesse l’SQL è più semplice.
◦ Lazy loading approach
La tecnica è interessante di per sé…
Invece l’esecuzione di SQL addizionale per recuperare
le referenze a colonne di tabelle correlate è
usualmente poco efficiente.
29. “A data access layer (DAL) in
computer software, is a layer
of a computer program which
provides simplified access
to data stored in persistent
storage of some kind, such as
an entity-relational database”
30.
31.
32. Cos’è?
◦ E’ un tool (con annesso servizi) per creare un Entity
Data Model
EDM funziona su SQL Server, Oracle, DB2… DB Indipendent
◦ E’ un tool (con annesso servizi) per consumare un
Entity Data Model
◦ Gestione centralizzata tramite l’Object Context
Perché usarlo?
◦ Aumenta la produttività
◦ Genera mapping complessi tra entità e tabelle del
database
◦ Integrato con il Microsoft .NET Technology Stack
Note
◦ E’ “strategico”
33. Composto da 3 layers: Entity Data Model
◦ Conceptual (CSDL)
◦ Mapping (MSL) Conceptual
◦ Storage (SSDL)
Database agnostic
Comprende: Mapping
◦ Entità
◦ Associazioni
◦ Funzioni Storage
36. Abbiamo visto cos’è un ORM con annessi
pros e cons.
Abbiamo visto cos’è un DAL e perché un ORM
è importante per la generazione dello stesso.
Abbiamo visto EF come strumento di ORM.
Quindi da oggi potete usare un ORM…