Object Relational Mapping from A to Z

Download Report

Transcript Object Relational Mapping from A to Z

Object Relational
Mapping A to Z
Twitter: @greeleygeek
E-Mail: [email protected]
About Me
Over A Decade of
I.T. Experience
Web Developer,
DBA, DevOps, Mobile
Microsoft Cert.
in SQL Server
Summary
• What an Object Relational Mapper Is
• Why you might use an Object Relational Mapper
• Problems using Object Relational Mapper
• Solutions to common issues
• Popular Object Relational Mapper examples
• Debugging
• Final Tips
What Is It?
• Wikipedia: …”technique for converting data
between incompatible type systems in objectoriented programming languages. This creates, in
effect, a ‘virtual object database’ that can be used
from within the programming language”
• “Maps” set based data to objects useable by Object
Oriented languages.
What Is An ORM
What is An ORM?
© Universal Studios. All rights Reserved.
What Is An ORM?
• Database Management Systems: ~1960
• Object Oriented Programming: ~50s/60s
• One of the first ORMs was TopLink for SmallTalk in
1994
Popular Flavors
What Is An ORM?
Object Impedance Mismatch
Wikipedia defines this as: “…conceptual and technical
difficulties that are often encountered when
a relational database management system (RDBMS)
is being used by a program written in an objectoriented programming language or style; particularly
when objects or class definitions are mapped in a
straightforward way to database tables or relational
schemata.”
The “ORM problem”
http://upload.wikimedia.org/wikipedia/commons/7/76/Bruce_Crandall%27s_UH-1D.jpg
Solutions
• Abandon the Object Model altogether returning to
traditional methods
• Use a storage method that is object oriented itself
(OODBMS, NoSQL possibly)
• Hand-crafting each Mapping
• Mix of ORM and SQL
• Integrate datasets into language itself (think LINQ)
• Build solution on relational concepts (blocks of
data)
The Good News
Taking A Peek
NHibernate Demo
NHibernate Demo
NHibernate Demo
NHibernate Demo
NHibernate
NHibernate Demo
NHibernate Demo
Nhibernate Demo
NHibernate Demo
Taking A Peek
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Entity Framework
Micro ORM
• Slimmed down ORMs
• What they lack in features they make up for in
speed
• Popular flavors are PetaPoco and Dapper
Massive
Massive
Massive
Massive
Massive Demo
Debugging An ORM Demo
ORM Pros
• Simpler for developers
• Supports many database platforms
• Supports many different languages
• The impedance mismatch is handled for us
• Developer can focus on the code, not the database
ORM Cons
• Can be cumbersome to set up (NHibernate)
• Joins and complex queries can be difficult
• Hard to read performance metrics
• Another layer between the database and the
application.
Final Thoughts
• ORMs continue to advance
• Work for most solutions
• Consider stored procedures or views for finer
control.
Twitter: @greeleygeek
E-Mail: [email protected]
Code Links
• NHibernate Demo Source Code:
https://github.com/anthem001/NHibernateDemo
• Entity Framework Demo Source Code:
https://github.com/anthem001/EntityFrameworkDemo
• Massive Micro ORM Demo Source Code:
https://github.com/anthem001/MassiveORMDemo
• Slides posted at: http://zero1design.com