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.

Reply via email to