This video will help you immensely:

http://sites.google.com/site/io/under-the-covers-of-the-google-app-engine-datastore

You can skip to the end if you just want to grok the transactions, but
the rest of it is extraordinarily helpful as well.

You are correct, if you use transactions, you do not need to manage a
timestamp.  This is because GAE has its own timestamp on each entity
group.  When you load an entity in a transaction, GAE checks this
timestamp.  When you commit, it checks the timestamp again - and if
something changed, you get a ConcurrentModificationException.  By
running your transaction in a retry loop and checking for
ConcurrentModificationException, you can safely ensure that non-stale
data is written.

Note that this isn't too far off from a description of what happens
when you do a non-transactional put().  It's just that the transaction
and retry loop are performed within the datastore itself.  Creating an
explicit transaction just provides the opportunity for your business
logic to get "in the loop" so to speak.

Jeff

On Thu, Apr 7, 2011 at 7:09 AM, Peter Backx <peter.ba...@gmail.com> wrote:
> Hi Ikai,
>
> Could you expand your answer a little? Do you mean that I don't need to
> manage a timestap/version if I use transactions? Or do you mean I should use
> transactions to combine a read (to check for a changed timestamp/version)
> with a write?
>
> If I don't manage the timestamp myself, how does AppEngine know another
> process change the data since the last read? part of the key?
>
> Sorry for those beginner questions, I started using the datastore via the
> JDO API with a relational background, but it looks it isn't always the best
> fit for typical datastore issues. Objectify looks much better as it is
> specifically designed for it.
>
>
> Thanks every one for your answers
>
> Peter
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to