{quote} \[...] Basically the transaction manager offers one transaction per thread, allowing us to use nested service calls :S. {quote} Nested transactions sometimes can be good, although it's something that should be used carefully. {quote} My naïve Aspects comment was about calling save after each setter (which in the end does not offer a full solution)… Comments are more than welcome... {quote} What about using aspects with a Unit of Work? The aspects would simply mark an object as new, dirty or delete on the unit of work. Still a Transaction Manager would be needed to then collect the data from the unit of work and persist such changes... (No coments, back to square zero). {quote} Regarding searches, I will add only this: you are still throwing away performance when you want to search across multiple tables (read joins). {quote} Yes, even if everything is loaded into memory and you don't need to worry about the materialization time a search in memory cannot be compared with an optimized search of a RDBMS. Specially if you need to do navigation through the domain (read joins). There aren't perfect solutions, only tradeoffs. But it would be very (very!) nice to have a good solution for the problem. By the way, interesting links the ones you gave!