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. Thus when an item needs to be updated, a clone of the object is returned and changes are made to the cloned object. Any modifications to this object are not observed by the repository until the object is submitted for an update action.

Generally, implementations of 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. See, for example, the SQL Repository Caching chapter.

 
loading table of contents...