- Totally in the datastore.
- Totally in-memory (you supply the candidate instances, and it queries over those instances).
- Retrieve all candidates from the datastore, and evaluate the filter, result etc in memory.
SVN trunk now has a new addition following the same basic idea ... "JPQL2". This implements JPQL using the same underlying SQL API, and using the bulk of the new code added for "JDOQL2". Since JPQL doesn't support variables then this implementation is close to complete (with the exception of bulk update/delete - to be added soon).
One important feature to note is that a user can contribute their own implementation of various methods, or functions by adding their own plugin (just a single method typically). See the docs for an example.
The intention is to make these new implementations the default in the next major release of DataNucleus Access Platform. To try them out add the following persistence properties
datanucleus.query.JDOQL.implementation=JDOQL2
datanucleus.query.JPQL.implementation=JPQL2