{quote:jpmsi} The thing is: in the scenario you mentioned, where this object represents an entity of an persistent store, you are maintaining one representation per object in memory space. How would we deal with concurrency, in a typical multi-threaded, or even multi-application-container environment? {quote} While doing this exercise I didn't think much in thread-safe but in my opinion a good way of maintaining the coherence is to use {link:Software Transactional Memory|url=http://en.wikipedia.org/wiki/Software_transactional_memory}. {quote:jpmsi} Note that both relate to very different problems: the first addresses synchronization within memory space, the other addresses concurrent access to the database, and ensuring that an object living in memory space always represents the correct database information. {quote} I see the problems of synchronization within memory and correct representation of the database information the same. Because if the implemention has correct synchronization then at all times the object will be representing what is in database (unless you directly change the database by hand, which you shouldn't).