1. A method for monitoring changes to data comprising: receiving an indication in an object graph manager that a data bearing object expects to undergo a change, wherein the data bearing object includes a programmatic grouping of data and the change includes a modification, an addition, or a removal of associated data, and wherein the object graph manager is external to a database level in a database application; registering a change anticipation message memorializing the expected change to a data bearing object in the object graph manager; taking a first snapshot of said data bearing object upon receiving the change anticipation message; saving the first snapshot in an undo stack; identifying the change to said data bearing object once it has occurred; and receiving an additional event message selected from among a commit message and an undo message, further comprising: in the event of a commit message, performing the change to the data bearing object and performing a garbage collection process to the undo stack; and in the event of an undo message, ignoring the change and retaining the data bearing object in a form represented by a snapshot in the undo stack.