ORM - Introduzione

1,439 views

Published on

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.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,439
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

ORM - Introduzione

  1. 1. Alessandro Forte SW Architect @ T&C Group MCP – MCTShttp://www.alessandroforte.it/blog info@alessandroforte.it
  2. 2. Alessandro Forte Software Architect @ T&C Group DotNetCampan ia Founder ContattiWebSite: 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. 3. Agenda della giornata:o ORMs o OR Impedance Mismatcho DALo Entity Framework o DEMO (Creiamo un EDM) o DEMO (Consumiamo un EDM)o QAT
  4. 4. “Object-relational mapping (ORM, O/RM, and O/R mapping) incomputer software is a programming technique in which a metadatadescriptor is used to connect object code to a relational database”.Object code is written in object-oriented programming (OOP) languagessuch as Java or C#.Gli Oggetti sono GERARCHICI I Database sono RELAZIONALI
  5. 5. “Object-Relational Impedance Mismatch” è un modo elegante di dire chegli Object Models e i Relational Models non lavorano molto bene tra diloro.Gli RDBMSs rappresentano I dati in un “formato tabellare”, mentre Ilinguaggi 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 lanotazione tabellare dei database relazionali ci espone ad almeno 5problemi di “disallineamento”
  6. 6. 1) Granularity
  7. 7. 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{ }
  8. 8. 1) Granularity2) Inheritance
  9. 9. L’ereditarietà è un paradigma “naturale” nei linguaggi di programmazioneorientati agli oggetti.Negli RDBMS invece non abbiamo nulla che possa essere paragonato alconcetto di ereditarietà. User Inheritance Student Teacher
  10. 10. 1) Granularity2) Inheritance3) Identity
  11. 11. Un RDBMS definisce esattamente una ed una sola nozione di «identità» Teacher_id = 2233 Thread 1 Teacher Thread 2 Teacher
  12. 12. 1) Granularity2) Inheritance3) Identity4) Associations
  13. 13. Le associazioni sono rappresentate come un riferimento unidirezionale neilinguaggi 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 { }
  14. 14. 1) Granularity2) Inheritance3) Identity4) Associations5) Data Types
  15. 15. Una delle maggiori "differenze" tra i database relazionali e i linguaggi OO risiede nellatipologia dei Tipi utilizzati.Il modello relazionale infatti proibisce in maniera "stretta" attributi (o puntatori) perreferenza, al contrario di ciò che fanno invece i linguaggi OO. String Varchar(150) Date DateTime Decimal MoneyCaso 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 stringhecon la memoria disponibile.
  16. 16. Object Relational Mapping, è una tecnica checonsente ai linguaggi di programmazione orientati aglioggetti di lavorare “bene” con i database relazionali. Object world Relational world User Stu Mapping A… B..
  17. 17.  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….
  18. 18.  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
  19. 19. Demo – Orm … cosa avevate capito?
  20. 20. ◦ 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.
  21. 21. ◦ 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...
  22. 22.  Database con 300 tabelle…• 1 tabella = 4 operazioni CRUD = 4 Sprocs
  23. 23.  300 tabella = 1200 operazioni CRUD = 1200 Sprocs Sapete cosa significa? • Fate voi … 
  24. 24.  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.
  25. 25. Agenda della giornata:o ORMs o OR Impedance Mismatcho DAL
  26. 26. “A data access layer (DAL) incomputer software, is a layerof a computer program whichprovides simplified accessto data stored in persistentstorage of some kind, such asan entity-relational database”
  27. 27.  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”
  28. 28.  Composto da 3 layers: Entity Data Model ◦ Conceptual (CSDL) ◦ Mapping (MSL) Conceptual ◦ Storage (SSDL) Database agnostic Comprende: Mapping ◦ Entità ◦ Associazioni ◦ Funzioni Storage
  29. 29. 20 Minuti…Non ti concediamo di più!
  30. 30.  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…
  31. 31. Cosa ci riserva il futuro?
  32. 32. (Status : I’m Away… not connected) Domandine...?
  33. 33. ASP.Net C# HTML5 JAVA IPHONE ANDROID JOOMLAWORDPRESS VOIPADOBE SUITE
  34. 34. La vostra opinione per noi è fondamentale: compilate il modulo di feedback …uhm… potete anche dirmelo a voce o per email! GRAZIE PER L’ATTENZIONE

×