Hi Matt, There are several different ways to save/query objects from the datastore not just JDO or JPA. They are: 1. Low level api - work directly with the datastore's native (for lack of a better term) representation of an object. 2. JDO or JPA - work with these standards to abstract away the low-level api and deal with the datastore in a more SQL like (loosely used here) way 3. Use a third party framework like Objectify.
Everyone has there comfort level that they want to work with. You can also use more than one of these approaches in an application. I personally use both JDO and the low-level api. I used JDO becuase when I started it was the first thing I came across. Many have moved to 3rd party frameworks like Objectify because unlike JDO which comes from the SQL world, Objectify is geared toward the datastore and how it works and is a lighter framework. I also use the low-level api mostly in my map reduce classes since that is how you get the entities handed to you in the map function. The big point is not to get confused and using a mix of two of them and thinking your doing the same one. I think from your number #1 and #2 that you might be saving your entities using JDO and then trying to query with the low-level api. Which is completely OK, but you have to understand how the query mechanism and keys are represented in both formats. From a learning perspective and really understand the datastore I would play around with the low-level API before moving to one of the higher-level APIs especially relationships between entities.. You probably will want to use a higher level API in your actual production code, but understanding how keys, queries, transactions, entity groups, relationships, indexes etc. work at the low-level will make your life a lot easier in the long run. I wish I would've started learning the low-level API first. Hope some of this helps, Steve On Fri, Jan 28, 2011 at 10:06 AM, Matt Reeves <[email protected]> wrote: > I'm a total n00b here and just getting started trying to figure out how the > datastore works, mostly by reading the documentation. Here are the > assumptions I am making, please tell me if I'm saying anything incorrect: > > 1) To define persistent entities, one must either create persistent JDO > classes as mentioned here (http://goo.gl/w9fno) or use JPA > 2) Once data is loaded to the entities, the queries explained here ( > http://goo.gl/lHO3S) are the best approach to take for querying the > datastore as they will query any entity regardless of how it was defined. > 3) The bulkloader tool can be used to upload data to an entity > > So far, I have defined some entities using JDO classes, and then I used the > bulkloader to upload data for the entities from a csv file. The data shows > up when viewed from the admin console, but when I run the simple flavor of > queries as mentioned in #2 above, I am getting no results. Any help or > introductory advice would be much appreciated. Thanks. > > > Here is an example of a class I have defined: > > @PersistenceCapable(identityType = IdentityType.APPLICATION) > public class Rec { > > @PrimaryKey > @Persistent > private String code; > @Persistent > private String name; > @Persistent > private Double value; > > public String getCode() { > return this.code; > } > public String getName() { > return this.name; > } > public Double getValue() { > return this.value; > } > } > > And here is an example of the query I am trying, just trying to grab the > stored data and populate new object for runtime: > > Vector<Rec2> Rec2V = new Vector<Rec2>(); > DatastoreService datastore = > DatastoreServiceFactory.getDatastoreService(); > Query q = new Query(Rec.class.getName()); > q.addSort("value", Query.SortDirection.DESCENDING); > PreparedQuery pq = datastore.prepare(q); > for (Entity result : pq.asIterable()) { > Rec2V.add(new Rec2( > (String) result.getProperty("code"), > (String) result.getProperty("name"), > (Double) result.getProperty("value") > )); > } > > -- > 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]<google-appengine-java%[email protected]> > . > 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 [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.
