The Repository pattern is a Persistence abstraction in Domain Driven Design.
Repositories behave like a collection of an Aggregate Root, and act as a facade between your Domain and your Persistence mechanism.
As expected from a collection, the Repository should enforce equality consistency with Identity. In languages where default equality is by reference, the Repository should return the same instance for the same identity.
Blog post: Blogged The Repository Pattern
domaindrivendesign.org on