« Return to Thread: Query closures for JDO 2.2

Query closures for JDO 2.2

by Craig L Russell :: Rate this Message:

Reply to Author | View in Thread

As you know, I'm not fond of the non-object style of query update,  
and there are cases where you want to do a bulk update efficiently in  
the datastore, but SQL just doesn't capture the object mapping that  
is used in the rest of the application.

So what about defining a query closure, that is, declare a set of  
statements that is executed for each qualifying instance that  
satisfies the filter.

This could execute in memory for memory collections, or in the  
datastore for non-instantiated collections. For portability we need  
to define the closure in terms that can be mapped directly to SQL.

For example,

PERFORM salary *= 1. + :percent; lastSalaryAdjustment = :date FROM  
Employee WHERE rating == :rating

Query q = pm.newQuery(Employee, "rating > :rating");
q.setPerform("salary *= 1.06; lastSalaryAdjustment = :date");
q.execute(.06, new Date(), 7);


Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@...
P.S. A good JDO? O, Gasp!



smime.p7s (3K) Download Attachment

 « Return to Thread: Query closures for JDO 2.2