A Repository is a mechanism for encapsulating storage, retrieval, and search behavior which emulates a collection of objects.
The Repository pattern in Domain Driven Design is an extension of the repository pattern which aims at abstracting data persistence concerns so that it appears that client code is dealing with an in-memory collection but where all calls are resolved out into infrastructure specific persistence commands.