Object faulting is supported using Demand References. These are smart pointers integrated into the 'get' methods for relationships that fault objects and collections into memory when accessed. When stored, only the object passed is applied and its references are not followed. For a restore operation, a single object is returned with its non-object attributes restored. The Object Manager will not attempt to NULL the object pointers or create any collections.
Deep mode applies to the target object, as well as all objects it references, and so on.
When storing, the Object Manager will walk the nested graph of objects and store all new and modified objects. If it encounters the same object more than once it will ignore the subsequent encounters and continue. On restore, it will restore the requested object and all of its references, the references of those references, and so on. If, during the course of restoring, the Object Manager attempts to restore an object that already exists in memory, the in memory copy will be used and the Object Manager will not attempt to follow it further. We strongly recommend use of demand references and restore on a shallow basis.