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 -~----------~----~----~----~------~----~------~--~---
