The query filter is a Boolean expression that is evaluated for
each candidate instance; the query result includes only those instances
true. The filter contains
expressions supported by the JDO Query Language (JDOQL). Appendix D contains the Backus-Naur
Form (BNF) syntax for JDOQL.
The query filter is specified with respect to the object model defined by your persistent classes, using the field names in your persistent classes. You do not use the names and representation found in the underlying datastore. You write your applications using the single data model of your persistent classes.
The filter can access the fields in your classes directly, even
though they may be declared
private. Some developers say that this breaks encapsulation, but database query languages express constraints on the values of fields. A JDOQL query will never modify the value of a field, and only the JDO implementation can access these fields in your application directly, which it needs to do anyway to manage their state. Those that argue this breaks encapsulation believe that only the methods of a class should access its fields. JDOQL has been designed so that query execution can take place in either the application’s execution environment or the datastore server. Requiring the use of methods would require the datastore server to support Java and the loading of your application classes. This would severely limit the number of datastores that JDO could support. In most cases, the ...