I’m trying to understand when to use an entity “parent” on GAE. Is this only useful for querying (ie get all the Foo objects where the parent == someObj) or does the child have access to the parent entity much like a ReferenceProperty?
When is it better to use the parent vs ReferenceProperty?
The only time you should use entity groups (which is what all entities with a common parent form) is for transactional safety. If you need to update multiple records in a transaction, they all need to have the same root entity. The reason you wouldn’t just put all your entities under a single parent is because updates to an entity group are limited to roughly 1 per second. For more information, see this section of the documentation.
An entity can access its parent with
this.parent, but there’s nothing special about it – that’s just syntactic sugar fordb.get(this.key().parent()).