Very nice comparison! And if you add nested contexts to the picture, it turns into a certain subset of Git :-)
On Jul 25, 2011, at 7:09 PM, Robert Zeigler wrote: > Transactions start at "commitChanges". Cayenne's feel is much more like svn > to me than hibernate. You "check out" objects (fetch them from the db) to > your working "directory" (the object context). You modify them, delete them, > add new ones, etc. Then a call to "commitChanges" sends everything back to > the db in a single transaction, very much analogous to svn commit. And > rollbackChanges is very much analogous to svn -R revert . > > Robert > > On Jul 25, 2011, at 7/2511:01 AM , Christian Grobmeier wrote: > >>> Since ObjectContext (server or ROP client) is a "disconnected" object in >>> Cayenne transactions are something different compared to say Hibernate >>> (that's my guess anyways, I don't know much about Hibernate). Cayenne >>> server transactions are a "bridge" to JDBC transactions (there's not >>> Cayenne specific transactional behavior, other than locking a JDBC >>> connection for the operation duration, and allowing users to delineate a >>> custom JDBC tx scope). >> >> Very interesting for me, as I write about transaction for the article >> at the moment. >> >> You wrote, ObjectContext is some kind of a "disconnected" object. If I >> create two new objects in the ObjectContext, when does the transaction >> start exactly? Is it when I call "registerNew" on the first object or >> is it when I commit my changes (it then would create a transaction, >> commit both new objects, close transaction)? >> >>> >>> Since there's no JDBC on the ROP client, there are no Cayenne transaction >>> there. Potentially we can extend this abstraction to the client, but it was >>> thought originally that this will break a simple request/response >>> webservice'y feel of ROP. >> >> Makes perfect sense >> Cheers >> >> >>> >>> Andrus >>> >>> >>> On Jul 25, 2011, at 6:18 PM, Christian Grobmeier wrote: >>> >>>>>> I was just surprise that getDataDomain() is not in CayenneRuntime. It >>>>>> seemed to me that would be the logical place. I can see getChannel and >>>>>> getContext is in CayenneRuntime too. So, why not getDataDomain? >>>>> >>>>> The answer is ROP. DataDomain is a "server" configuration object, and is >>>>> not available in the "client" (ROP) configuration. >>>> >>>> Ah understood >>>> >>>> Does that mean a "ROP client" is not meant to work with transactions, >>>> only the "ROP server" is? (not knowing to much about ROP at the >>>> moment) >>>> >>>> Cheers >>>> Christian >>>> >>>>> >>>>> Andrus >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> http://www.grobmeier.de >>>> >>> >>> >> >> >> >> -- >> http://www.grobmeier.de > >
