Thursday, October 15, 2009

Welcome to the GAE/J Persistence Blog!

Greetings everyone!  My name is Max Ross and I'm an engineer on the Google App Engine team who works on persistence stuff: the datastore, the low-level datastore api, and the JDO/JPA implementation.  I'll be your host.

GAE for Java has been available since early April 2009, and since launch we've fixed a lot of bugs and added a lot of features related to JDO and JPA.  However, I read the GAE Java group regularly and I see the persistence questions being asked, and my impression is that we should be giving you, our customers, more guidance.  This blog is my attempt to provide that additional guidance.

Each week I'm going to post a complete example demonstrating how to accomplish a specific persistence-related task.  We don't play favorites here on the App Engine team so I'll construct the example in both JDO and JPA, and I'll try to cover a wide range of topics to keep everyone interested.  My hope is that, over time, this will come to serve as a valuable resource to all App Engine Java developers whether you're new to JDO/JPA or not.

Thanks for reading!

11 comments:

  1. I watched your Jun 1, 2009 presentation about GAE datastore, and you did mention that there is a future task to allow filtering on parent-child entity combination (akin to regular joins). Do you happen to know when is this slated for?

    ReplyDelete
  2. There's a lot of work that needs to happen before this can be exposed in a reasonable way. I wouldn't expect to see this anytime soon.

    ReplyDelete
  3. "We don't play favorites here" hm, well. I tried both JDO and JPA with GWT&GAE and both worked well. But I want to choose one of these technologies for my project. I saw that almost all samples use JDO persistence. I also know that JPA is the "better" persistence technology when you use RDBMS (BigTable isn't a RDBMS...). So my simple QUESTION is: Which persistence layer has the brighter future in YOUR project (resp. GAE), JDO xor JPA? :)

    ReplyDelete
  4. I'll give you the same answer I give whenever I'm asked this question:
    If you're not already familiar with JDO or JPA, use JDO because our documentation is better. If you're more familiar with JDO than JPA, use JDO. If you're more familiar with JPA than JDO, use JPA. If you're equally familiar with both then you probably have a preference, so use the one you prefer.

    ReplyDelete
  5. I'd love to see a post on directly using the low-level api instead of the jpa / jdo abstraction layers

    ReplyDelete
  6. We're working on adding a lot more formal documentation for the low-level api. In the meantime is there a specific problem you'd like to know how to solve?

    ReplyDelete
  7. This comment has been removed by the author.

    ReplyDelete
  8. Hi, I'm trying to find an efficient way to implement an unowned relationship using the Key strategy, but am not sure what needs to be done if there are multiple unowned relationships. Would it not become very inefficient to get details on all the various unowned fields, to get just one row of data?

    Would appreciate guidance on this issue?

    ReplyDelete
  9. I'm trying to keep the discussion in the comments tied directly to the blog posts. Can you please post your question to the App Engine Java Google Group?

    http://groups.google.com/group/google-appengine-java

    Thanks,
    Max

    ReplyDelete
  10. Hey, this is a great blog, but sadly there aren't a lot of articles in 2010. Any chance we 'll see more useful articles?

    ReplyDelete
  11. I agree. just stumbled across this after many days of perusing app engine persistence strategies online.

    Is this blog still being kept up?

    ReplyDelete