Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Relational algebra wikipedia , lookup
Concurrency control wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Clusterpoint wikipedia , lookup
Versant Object Database wikipedia , lookup
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