I have been experimenting with writing an application for the Java edition of Google Appengine, which I blogged about before. Back then, I was still trying to use JPA with the Datastore, but the longer I was trying, the more I got the feeling that JPA (and JDO) just don’t fit Google’s Datastore very well. And then I came across Objectify and SimpleDS.
It seems that by offering JPA and JDO, Google has attempted not to alienate developers too much. But the fact of the matter remains that the Appengine Datastore (some people call it ‘a huge HashMap’) is very different from an RDBMS and we as developers best accept that fact and get on with it.
A number of projects have been started that offer an alternative to using the datastore in your API: simpleds and Objectify being amongst the most notable. SimpleDS seems to be developed by a somebody who come from a JPA/Spring background and it has nice features such as such as declarative transaction management through Spring. With Objectify, there is no out-of-the-box way to do that. Then again, it’s probably not that hard to develop a transaction manager for Objectify.
On the other hand, the documentation for Objectify seems to be more complete and it has a much more active user group. It’s tough making choices on the bleeding edge I have made some progress with Objectify and it was quite easy to get started. The interface of the Objectify interface looks a bit complicated and you find your self newing Key<YourEntity> objects all over the place. But, it works like a charm and is easy to write integration tests for.
Therefore, I will be evaluating both. Could both project join forces? That would probably benefit the community at large. Both projects are very much in early stages, even though Objectify has reached version 2.1 by now
Update: I found an interview with the 3 lead developers of Twig, Objectify and SimpleDS. Read it here.