Yeah, you might want to break it up in that case. If you don't use
bigChunkOfJson frequently, put it in a different object that you can
generate the key for on the fly (so you can use a get by key instead of
needing to use a query).

--
Ikai Lan
Developer Programs Engineer, Google App Engine
Blogger: http://googleappengine.blogspot.com
Reddit: http://www.reddit.com/r/appengine
Twitter: http://twitter.com/app_engine



On Thu, Nov 11, 2010 at 1:55 PM, Mark <mar...@gmail.com> wrote:

> Thanks Ikai. I have an entity that has a bunch of Text properties,
> they can each be quite large. I wanted to avoid loading them if
> they're not going to be used for a specific query. For example, I have
> a list of GameRoom objects:
>
>    class GameRoom {
>       String gamename;
>       String mapname;
>
>       Text bigChunkOfJson1;
>       Text bigChunkOfJson2;
>       Text bigChunkOfJson3;
>    }
>
> If a user wants to get a listing of games my service is hosting, it's
> probably not wise for me to deserialize each "bigChunkOfJson" property
> to give them a simple game listing. Only if they join a game do I need
> to touch those Text properties. I read the Relationships page again
> and it seems that child objects are lazy loaded:
>
> "Child objects are loaded from the datastore when they are accessed
> for the first time. If you do not access the child object on a parent
> object, the entity for the child object is never loaded. If you want
> to load the child, you can either "touch" it before closing the
> PersistenceManager (e.g. by calling getContactInfo() in the above
> example) or explicitly add the child field to the default fetch group
> so it's retrieved and loaded with the parent"
>
> So I figure I could split my class up like:
>
>    class Game {
>        String gamename;
>        String mapname;
>
>        MoreInfo more;
>     }
>
> So if I query for Game instances, so long as I don't access the
> MoreInfo object, that data won't be fetched (if I understand
> correctly). Then I can put all my Text objects in that class,
>
> Thanks
>
> http://code.google.com/appengine/docs/java/datastore/relationships.html
>
>
>
> On Nov 11, 3:56 pm, "Ikai Lan (Google)" 
> <ikai.l+gro...@google.com<ikai.l%2bgro...@google.com>
> >
> wrote:
> > Text properties were never actually lazy loaded. We only lazy loaded them
> to
> > match the JDO/JPA spec. In practice, the entire entity was being read and
> we
> > just weren't populating the entity.
> >
> > Try running AppStats - though I suspect the deserialization shouldn't be
> > *that* slow.
> >
> > --
> > Ikai Lan
> > Developer Programs Engineer, Google App Engine
> > Blogger:http://googleappengine.blogspot.com
> > Reddit:http://www.reddit.com/r/appengine
> > Twitter:http://twitter.com/app_engine
> >
> >
> >
> >
> >
> >
> >
> > On Thu, Nov 11, 2010 at 8:38 AM, Mark <mar...@gmail.com> wrote:
> > > Hi,
> >
> > > Is a Text property lazy loaded when I query for an instance of that
> > > class? It seems to not be lazy loaded as of 2008, wondering if that's
> > > still the case?:
> >
> > >http://groups.google.com/group/google-appengine/browse_thread/thread/.
> ..
> >
> > > I ask because I'm wondering if a query for a class is spending time
> > > deserializing my large Text properties, or waiting until I actually
> > > access them (if ever) after the query is already performed,
> >
> > > Thanks
> >
> > > --
> > > 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-j...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com><google-appengine-java%2B
> 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-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@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-j...@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