The base interfaces of a repository define an immutable data store. It provides a read-only version of the elements contained in the repository. Extensions of the Repository interfaces provide facilities to create, update, and remove items from a repository. See atg.repository.MutableRepository. The design goal for updates was to allow transactional integrity across a set of changes in a high performance manner. When an item needs to be updated, a clone of the object is returned and changes are made to the cloned object. The repository carries out those changes only when the object is submitted for an update action.

Generally, repositories use caches to improve performance. Items retrieved out of a repository either through a query process or directly by ID from the repository are cached. Typically, cache policies are based on least recently used (LRU) design patterns or time-based expiration. For more information, see the chapter SQL Repository Caching.