A data store can contain many types of objects. The repository is not the data store itself; rather, it is composed of JavaBeans whose properties can be found and stored in the data store. The repository provides a mechanism to retrieve the data elements, and creates a run-time representation of the available metadata for each object. This goal is achieved through three main conceptual parts of the Repository API:

For example, a repository might track elements of an organization. Each employee has a corresponding repository item, as does each department. An employee item descriptor specifies all properties that an employee repository item can possess; a department item descriptor specifies all the possible properties of a department. An application can build queries that return the appropriate employee or department repository items as they are needed by the application.