Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
What is meant by transparent access?
Last updated at 4:04 pm UTC on 8 December 2011
Magma offers exceptional read and write transparency.

Read Transparency

Magma provides good read-transparency. Beyond the initial request for the #root object of the repository from a MagmaSession, your program is free to explore the persistent root object normally; e.g., by merely sending messages. Although the size of the persistent root may be many times the size of available RAM, Magma will page in requested portions and out portions no longer referenced by the program (Magma uses weak collections for its caching, so your program only consumes as much memory as the objects it references).

Proxies

Proxies are used to truncate the portions of the domain model that are not currently in memory. When a proxy is sent a message, it's #doesNotUnderstand: method is invoked to retrieve the real object from the repository and become the proxy to it – so that all other objects referencing it will not reference the real object.

Write Transparency

Write-transparency is high in that Magma determines new and changed portions of the model automatically. The only requirement is that the application program commit changes to the model via atomic transactions. Transactions are a common semantic in databases for preserving integrity of changes. A number of commit-strategies allow Magma to be suitable for a variety of programs and users.

Benefits

This level of transparency allows existing objects which have never been designed to reside in a database to reside in Magma. For example, no Morph knows anything about Magma, but Morphs may be stored, shared and collaborated via Magma.

Object databases support complex domain relationships without any of the mapping burden associated with relational mapping tools. There is no need for signaling changes, marking dirty, code-generation, attribute-column associating, or any of the other things that burden development using even modern relational mapping tools. Developers are free to use complex object models with impunity. Domain code remains pure, and independent of storage.