As this thread seems to be of some interest I'd like to summarize why
I'm happy with Low-Level API and why JDO caused a lot of pain to me.
Some of the points may be a matter of taste, some are just annoying -
others have been show stoppers to me:

- Each time I save a persistent class the enhancer runs
- Sometimes the app gets deployed without enhanced classes (most
likely when saving files directly before deploy)
- Fetch groups don't work properly in the current release
- Removing and adding list members (child entities) in the same
transaction simply is not working
- I've implemented a retry wrapper around all DB statements to deal
with low reliability of app engines datastore. How to do that with
JDO?
- When using JDO it has not been obvious when stuff gets save to the
datastore. When do I have to call makePersistent(...), when is it done
explicitly
- Detaching object graphs is not working properly and is simply an
overcomplicated concept IMO
- Dealing with the LIMIT=1000 and OFFSET=1000 restrictions in
appengine makes it hard to find an approach to iterate over all
entities of a kind in JDO (It's not even easy with Low-Level API but
at least possible)
- Query restrictions (unequality filter has to be first ordering etc.)
is not reflected properly in JDO
- I stopped posting JDO bugs as I've already posted many bugreports
(that took a lot of time to create including examples) and all of them
are still in "NEW" state. Once Google decides to take care of
bugreports from users, I'll start posting bug reports again.

My conclusion: If you want to build an application running on app
engine you need to know what happens under the hood. When using JDO
you get the wrong impression that you don't have to.

On Sep 24, 2:36 pm, "Alejandro D. Garin" <[email protected]> wrote:
> -1
> I have used JDO in my application (ok... not a big one, 9 domain classes, 6
> DAO classes and 3 services) and I'm happy using JDO.
>
>
>
> On Wed, Sep 23, 2009 at 6:40 AM, dflorey <[email protected]> wrote:
>
> > I've just refactored my app to use Low-Level API instead of JDO and
> > it's much cleaner, works more reliable etc.
> > If you are not really forced to use JDO/JPA I'd strongly recommend to
> > use the very simple, elegant and clean Low-Level API.
> > BigTable simply is not a relational db, so it is highly misleading to
> > fake a relational wrapper and to me it caused lots of pain.
--~--~---------~--~----~------------~-------~--~----~
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