In "Implementing the Repository and Finder patterns" Russel East shows some details of his application using Domain Driven Design (DDD). It's an interesting implementation of a Repository and Finder patterns and query objects. When talking about the Repository implementation Russel points out that: "A concrete implementation of the IPersistanceRepository interface is the technology / ORM specific stuff. I am using NHibernate 2.0, so my concrete implementation is called "NHibernateRepository". By using the IPersistanceRepository interface i am keeping the specifics abstracted away inside the concrete class. I have been able to successfully swap my IPersistanceRepository instance from NHibernate to a DB4o implementation with ease and no effect to my repositories."