Jeff, Excellent, thanks for the clear reply. I'll have to check it out. The cold start time reduction is a huge win given the realities of GAE today.
cheers -- James On Jan 21, 1:45 pm, Jeff Schnitzer <[email protected]> wrote: > SimpleDS' api is closer than the others to what I want, but here's > what I don't like: > > * Not enough use of generics. Key, Query, and PreparedQuery should > all be generified classes. > > * Key should not be used as the id for a class. The class itself > identifies the Kind, so having a Key id carries redundant information > that can be incorrect and cause problems. This becomes really obvious > when you generify the key class: > > // Isn't that redundant? > class MyEntity { > @Id OKey<MyEntity> key; > > } > > // This is what I expect to be able to do: > class MyEntity { > @Id Long id; > > } > > Having an id field instead of a key makes queries easier. With > Objectify, you can create a query without needing to know that the id > is part of a key field: > > query.filter("id >", 5000).sort("-id") > > This doesn't mean that the Key class should be hidden - the Key is > defines a _reference_ to an entity. This means that get() takes a key > and all relationship fields should be Keys. Thus, IMHO entities > should look like this: > > class MyEntity { > @Id Long id; > @Parent OKey<ParentEntity> owner; > OKey<Peer> somethingElse; > List<OKey<Child>> children; // if you want multi-valued > > } > > * Sometimes I want to use entity objects in GWT without having to > create separate data transfer objects. Any reference to the datastore > Key class prevents this from being possible. Objectify entities are > GWT-safe (unless you add non-GWT-safe code, of course) and the OKey > class is GWT-compileable in the objectify.jar. If your entity has > OKey fields, just add this module: > > <inherits name="com.googlecode.Objectify" /> > > Reminds me, I should add this to the documentation. > > * I don't like the way SimpleDS (or the low level API) makes you pass > around a Transaction object. By maintaining the transaction within an > instance of the Objectify/EntityManager/whatever interface, we can > eliminate all the API method duplication. > > * Classpath scanning shouldn't be required. I wrote a bit about this > here:http://code.google.com/p/objectify-appengine/wiki/BestPractices#Autom.... > The short version: Each and every library that does classpath > scanning adds 3-5s to your cold start time. Users see cold start > time, even on a busy app. It adds up. > > * I don't use (or like) Spring. > > All that said, SimpleDS does some things that Objectify doesn't (like > provide a query language and an IndexManager) so you might like it > better. It just wasn't for me. > > Jeff > > > > On Thu, Jan 21, 2010 at 8:18 AM, James Cooper <[email protected]> wrote: > > Hey Jeff, > > > Looks cool. Looks a lot like SimpleDS though. Just curious what > > shortcomings you found in SimpleDS. > > > -- James > > > -- > > 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 [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
