Transparent persistence allows you to use regular objects instead of a database. The objects are automatically read from and written to disk. Examples of such systems are Gemstone and Rucksack (for common lisp).
Simplified version of what they do: if you access foo.bar
and bar is not in memory, it gets loaded from disk. If you do foo.bar = baz
then the foo
object gets updated on disk. Most systems also have some form of transactions, and they may have support for sharing objects across programs and even across a network.
My question is what are the different techniques for implementing these kind of systems and what are the trade offs between these implementation approaches?