Test Driven Development and Automated Unit Testing in

Download Report

Transcript Test Driven Development and Automated Unit Testing in

Object Relational Mapping
John M. Miller
Perpetual Data Systems
John M. Miller
[email protected]
 Independent Software Architect, Designer & Developer
 PDC 2002 Speaker
 Collaborator on adding advanced business rule support
to a commercial .Net application framework
 Member of a team submitting a response to the OMG
request for a method for formalizing business rules
 XSLT transformations from ORM conceptual models into
.NET entity business object implementation
Overview
 What is Object Relational Mapping
 Why did Microsoft back away?
 Is OR Mapping dead?
 What if it isn't?
 What does it mean for .NET application
architectures?
 Which comes first the data chicken or
object egg?
What is Object Relational Mapping
 Something that persists objects into
relational databases
 Can be
 a software layer using dynamic SQL
generation
 a method of generating static SQL
 Implicit with Domain object models
 DataSets need not apply
Why is OR Mapping Important?
 Why are domain models important?
 Because I said so
 They abstract the data access code hiding the database
details
 They encapsulate the database in an interface that more
closely matches the conceptual domain.
 Object Models are more expressive for certain kinds of object
interactions
 Constraints become easier to implement
 Object notation is a natural way of navigating a join path
ACustomer.Orders[Number=1001].Items[Item=33].Product.Price
 Constraints become easier to implement
If AProduct.OnHand < AItem.Quantity Then raise BizRuleXceptn
Mappers
 Domain models put the responsibility of
reconciling design differences between the
object and data models on the persistence
layer
 Persistence Layers
 Static
 Hand coded
 Generated
 Dynamic
Problems with OR Mapping
 A weakness in the mapper limits the




capability of the object model and in turn
the capability of the application
No standard object query language
It can’t be done, not practical, a waste of
time, etc.
It costs time and money
The dread impedance mismatch
Wikipedia, C2
The Impedance Mismatch
"When you notice that you're experiencing
considerable pain, and you recognize that a
substantial amount of the pain occurs in and
around the interface between your code and the
relational database, then you've found the
Object/Relational Impedance Mismatch."
The Impedance Mismatch
 Technical
 Object Modeling and Data Modeling model
fundamentally different things
 Objects = Process
 Data persistence is secondary
 Data = Structure
 What about static class diagrams?
 Fundamentally flawed for complex structural
modeling
 Different Optimizations
 Identification schemes are a problem
The Impedance Mismatch
 Cultural
 Created by different camps
 Software Architects
 The equally dread Database Administrator
 Night & Day, Oil & Water, Pickles & Ketchup
The Impedance Mismatch
 Reality
 Neither domain models nor relational
databases are going away.
 Mappers are the price we pay for playing
 Does it really exist?
So why did Microsoft back away?
 ObjectSpaces
 Billed as the Microsoft OR Mapper
 Due to ship with Visual Studio 2005
 Rolled into WinFS
 Because
 Overlapped with some of the WinFS persistence story
 Different APIs and Microsoft wanted to unify the APIs
 Microsoft didn’t want to publish ObjectSpaces and then
release an incompatible WinFS
So why did Microsoft back away?
 WinFS
 Windows object store
 Due to ship with Longhorn
 Pushed back until after Longhorn
 Because
 It wasn’t going to be ready in time
 Object Persistence is harder than they thought
 E12
So why did Microsoft back away?
 To the net effect of leaving the market
without a Microsoft OR Mapper until?
2008?
2009?
2010?
 After first creating a buzz with the initial
previews of ObjectSpaces and generating
significant market momentum
 Leaving the development world to wonder
 Is OR Mapping dead?
Is OR Mapping Dead?
 In the Microsoft community
 Almost
 There are several implementations that were
available before ObjectSpaces that are still around
 And a few created since
 One that emulates the ObjectSpaces preview API
 In the Java community
 Not even close
 Widely adopted
 Not if, but which one
What if it isn't?
 You could miss out on a technology that could
make an application easier to design, implement
and maintain
 What is the .NET OR faithful to do?
 Wait for Microsoft
 Adopt an existing .NET OR Mapper until Microsoft
does something
 Try WORM
 Adopt an existing .NET OR Mapper permanently
 nHibernate is hot right now
 Switch to Java
 Like you, they get OR mappers
What does it mean for .NET
application architectures?
 XML and DataSets will continue to rule the DAL




world until a dominate OR mapper for .NET
appears
OR Mapping will continue to be used sparingly
and grow as the mappers mature
Adoption rate in the .NET community should
mimic the adoption rate for OR mappers in the
Java community, but at faster pace
Should be widely adopted in the .NET
community in 3-4 years
Hold your breath when WinFS ships
Which comes first the data chicken or object egg?
 Lets say you are starting a new project with:



Complex business logic
Complex data relationships
Interested in creating a domain model and and
relational database.
 What do you do first?
1. Call me
2. Create the object model you want to persist
3. Create the data model that you know you need
 If you do either 2 or 3 you have to deal with the
dread impedance mismatch
The Object Egg
 You create the domain object model first
using standard OOA&D methods
 Then derive the data structure from the
object model
 Problems
 Number of tables
 Normalization
 Fragile Structures
The Data Chicken
 You create the data model first using
standard data modeling methods
 The derive the domain model from the
data model
 Problems
You tell Loss
me?
 Fidelity
What then?
 Conceptual Models
 Design the structures conceptually first using a formal
conceptual modeling method
 Derive both the entity object model and data model
from the conceptual model
 Problems
 Your domain object model needs to collaborate with
the entity objects
 No standards
 Complex transformation
What next?
 2/1/2005 - San Diego .NET Developer
Group Meeting
 Implementing .NET Applications using
Conceptual Models
Thank You!
 [email protected]
 pdata.com/jMM





shrinkster.com/3bt
en.wikipedia.org/wiki/Object-relational_mapping
c2.com/cgi/wiki?ObjectRelationalMapping
theserverside.com/books/review/HibernateReview.tss
devx.com/vb2themax/Article/19894
 sddotnetdg.org/Events/SDDOTNET+Meetings/default.aspx