Soumettre la recherche
Mettre en ligne
O/R Mapping Einführung
•
0 j'aime
•
505 vues
Thomas Mentzel
Suivre
Einführung in O/R Mapping und die Konzepte
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 27
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Mikulka Residence
Mikulka Residence
Bruce Ruggles
Shot list
Shot list
Micheal Victor
XII SENACE -Seminário Nacional de Cebola SP
XII SENACE -Seminário Nacional de Cebola SP
Agricultura Sao Paulo
Diseño de proyectos
Diseño de proyectos
Yoyi Leon
Mapa conceptual Rossid
Mapa conceptual Rossid
Universiadad de Santander UDES
Meiosi
Meiosi
albasainz99
08 codificacion y estadística descriptiva con software
08 codificacion y estadística descriptiva con software
rayitobang
LES DROITS CULTURELS - Déclaration de Fribourg
LES DROITS CULTURELS - Déclaration de Fribourg
La French Team
Recommandé
Mikulka Residence
Mikulka Residence
Bruce Ruggles
Shot list
Shot list
Micheal Victor
XII SENACE -Seminário Nacional de Cebola SP
XII SENACE -Seminário Nacional de Cebola SP
Agricultura Sao Paulo
Diseño de proyectos
Diseño de proyectos
Yoyi Leon
Mapa conceptual Rossid
Mapa conceptual Rossid
Universiadad de Santander UDES
Meiosi
Meiosi
albasainz99
08 codificacion y estadística descriptiva con software
08 codificacion y estadística descriptiva con software
rayitobang
LES DROITS CULTURELS - Déclaration de Fribourg
LES DROITS CULTURELS - Déclaration de Fribourg
La French Team
Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - Kurzpräsentation
Thomas Mentzel
An Introduction to Clean Code Developer
An Introduction to Clean Code Developer
Thomas Mentzel
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04
Thomas Mentzel
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03
Thomas Mentzel
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02
Thomas Mentzel
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1
Thomas Mentzel
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - Agenda
Thomas Mentzel
Productivity- and Self Management
Productivity- and Self Management
Thomas Mentzel
Logging mit log4net
Logging mit log4net
Thomas Mentzel
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010
Thomas Mentzel
AOP mit PostSharp
AOP mit PostSharp
Thomas Mentzel
Varianten des "Observer Pattern"
Varianten des "Observer Pattern"
Thomas Mentzel
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter
Thomas Mentzel
Contenu connexe
Plus de Thomas Mentzel
Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - Kurzpräsentation
Thomas Mentzel
An Introduction to Clean Code Developer
An Introduction to Clean Code Developer
Thomas Mentzel
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04
Thomas Mentzel
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03
Thomas Mentzel
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02
Thomas Mentzel
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1
Thomas Mentzel
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - Agenda
Thomas Mentzel
Productivity- and Self Management
Productivity- and Self Management
Thomas Mentzel
Logging mit log4net
Logging mit log4net
Thomas Mentzel
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010
Thomas Mentzel
AOP mit PostSharp
AOP mit PostSharp
Thomas Mentzel
Varianten des "Observer Pattern"
Varianten des "Observer Pattern"
Thomas Mentzel
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter
Thomas Mentzel
Plus de Thomas Mentzel
(13)
Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - Kurzpräsentation
An Introduction to Clean Code Developer
An Introduction to Clean Code Developer
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - Agenda
Productivity- and Self Management
Productivity- and Self Management
Logging mit log4net
Logging mit log4net
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010
AOP mit PostSharp
AOP mit PostSharp
Varianten des "Observer Pattern"
Varianten des "Observer Pattern"
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter
O/R Mapping Einführung
1.
O/R Mapper O/R Mapper
anhand von NHibernate & Entity Framework Thomas Mentzel März 2010
2.
No. 2© Logica
2010. All rights reserved Object-relational impedance mismatch Mapping Session Abfragen Agenda
3.
Object-relational impedance mismatch
4.
No. 4© Logica
2010. All rights reserved • Struktur • Objekt enthält Daten und Verhalten • Relationales Modell enthält ausschließlich Tupel (Daten) • Identität • Objekt hat zustandsunabhängige Identität • Tupel enthalten Identität (Primärschlüssel) • Datenkapselung • Objekt schützt Daten vor Veränderung (Methoden/Setter) • Tupel können beliebig geändert werden (im relationalen Sinne) • Arbeitsweise • Objekte sind Netzwerke interagierender Objekte. Kapselung durch Verhalten • Relationale Datenbank arbeitet prozedural Object-relational impedance mismatch
5.
No. 5© Logica
2010. All rights reserved Lösungsansätze • Objektorientierte Datenbanken • Kein “Mapping” • Applikationsgebunden • NoSQL • Relationale Funktionen in Programmiersprache • “Rückwärtslösung” • Keine Objektorientierung • InterSystems Cachè • Objekt-Relationale Mapper
6.
No. 6© Logica
2010. All rights reserved Objekt-Relationale Mapper • Abbildung der Tabellen auf Klassen • Wer war zuerst? Die Henne oder das Ei? • “Datenbank generiert Klassen” (DB zentriert) oder • “Klassen generieren Datenbank” (OOD zentriert)
7.
Mapping
8.
No. 8© Logica
2010. All rights reserved • Klassen/Eigenschaften • Primärschlüssel/Zusammengesetzte Schlüssel • Vererbung • Löschweitergabe • Änderungsverfolgung Herausforderungen
9.
No. 9© Logica
2010. All rights reserved • XML (NHibernate, EntityFramework) bzw. • Proprietäre Konfiguration • Attribute (NDO) • Code (FluentNHibernate) Konfiguration
10.
No. 10© Logica
2010. All rights reserved • Klasse Tabelle • Eigenschaft Spalten • Objektreferenz Klasse/Tabelle • Listen Klasse/Tabelle • Komplexe Typen Tabelle oder Spalten? • Properties und Spalten nicht namensgleich • Klassen und Tabellen nicht namensgleich • Eine Klasse auf zwei Tabellen (Join) Klassen und Eigenschaften
11.
No. 11© Logica
2010. All rights reserved • Objektidentität != Primärschlüssel • Primärschlüssel Strategien • int, auto int, GUID, fachlicher Schlüssel • Composite Keys • GetHashCode() & Equals() • Fremdschlüsselverweise • Eineindeutiges Objekt *-Schlüssel
12.
No. 12© Logica
2010. All rights reserved NHibernate: Klassen-Mapping
13.
No. 13© Logica
2010. All rights reserved • Tabelle pro Vererbungshierarchie (Single Table) • Vorteile: ID-Contraints • Nachteile: Leere Spalten • Tabelle pro Unterklasse (Joined) • Vorteile: Tabellen bilden „Vererbungsstruktur“ ab • Nachteile: Abstrakte Basisklasse „instanziierbar“, ID-Constraints beschränkt • Tabelle pro konkrete Klasse (Table per Class) • Vorteile: Keine „instanziierbare“ abstrakte Basisklasse • Nachteile: Spalten der Basisklasse in allen Tabellen, keine ID-Constraints Vererbung
14.
No. 14© Logica
2010. All rights reserved • Cascade Optionen • <Bag … Cascade=„all-delete-orhpans“> none, save-update, delete, delete-orphan, all, all-delete-orphan (NHibernate) • <OnDelete Action="Cascade" /> (EntityFramework; SSDL & CSDL) • Zirkuläre Referenzen • Löschen von „Lookup“-Werten • Wann ist ein Objekt ein „Orphan“ (Waise) Löschweitergabe
15.
No. 15© Logica
2010. All rights reserved • Eigenschaften-Setter überwachen • Klassen können den Status intern ändern (Fields) • Unterschiedliche Strategien • Eigenschaften mit INotifyPropertyChanged (EntityFramework) • Dynamische Proxys (NHibernate) • PostCompiler und Code Injection (NDO) • POCO vs. ORM-Basisklasse • NHibernate benutzt „Plain-Old-CLR-Objects“ • EntityFramework benutzt eine Basisklasse Änderungsverfolgung
16.
No. 16© Logica
2010. All rights reserved EntityFramework: Generierte Klassen
17.
Session
18.
No. 18© Logica
2010. All rights reserved • EntityFramework • new Context(); // aka. Session • NHibernate • new Configuration().AddAssembly(); • new SessionFactory(); // ThreadSafe • Session = SessionFactory.CreateSession(); // Non-ThreadSafe „Session“
19.
No. 19© Logica
2010. All rights reserved • Identity Map [Fowler, P of EAA 195] • IdentityMap per Session • Jede Session liest Daten aus der Datenbank • Context1.Person(id=1) != Context2.Person(id=1) Caching der Objekte
20.
No. 20© Logica
2010. All rights reserved • Pro Aktion eine neue Session erstellen • Singleton Session Implementierungen
21.
No. 21© Logica
2010. All rights reserved • Lazy Loading • Deferred Loading • Eager Loading • Design-Pattern zum Nachladen • Lazy Initialization (Initialisieren bei Zugriff –“Singleton“) • Virtual Proxy (Schnittstellen Dummy) • Value Holder (Wrapper) • Ghost (Partial Initialized) • NHibernate: Lazy Loading/Eager Loading • EntityFramework: Deferred Loading • if (!Parent.Children.Loaded) Parent.Children.Load() • Context.Parents.Include(„Children“) *-Loading
22.
Abfragen
23.
No. 23© Logica
2010. All rights reserved • Natives SQL • IQuery sqlQuery = Session.CreateSQLQuery(someComplexQuery); • IList<Person> people = sqlQuery.List<Person>(); • Proprietäre OO Abfragesprachen • HQL (NHibernate) • var query = „from Cat where Name=‚fritz„“; • LINQ • seit .NET 3.0 • SQL ähnlicher Syntax • Linq2Objects • Linq2SQL (Microsoft) • Linq2EF (Microsoft) • Linq2Hibernate (OpenSource) • Eigene Ling-Provider Abfragesprachen
24.
No. 24© Logica
2010. All rights reserved LINQ Magie • Delayed Execution • Abfrage erzeugt ExpressionTree • Jedes (!) .ToList() führt eine Datenbankabfrage aus (Linq2EF) • query.Where().OrderBy().ToList() wird in SQL umgewandelt • query.ToList().Where().OrderBy() wird auf dem Objektmodell ausgeführt • Delayed Execution benötigt einen Context
25.
No. 25© Logica
2010. All rights reserved • Warum führt jede „Abfrage“ auch ein SQL aus? Die Session kennt doch die Daten! Häufige Fragen
26.
Fragen? Thomas Mentzel Email: thomas.mentzel@logica.com MSN:
thomas.mentzel@logica.com Twitter: http://twitter.com/ThomasMentzel Blog: http://thomas.mentzel.name
27.
Vielen Dank Thomas Mentzel
Télécharger maintenant