Marcin, et al.
FYI: I just made a few changes to the caching mechanism to address
bugs in the new code and plug some of the earlier design holes:
* Fixed caching mechanism for Queries with parameters that stored in
the DataMap (I am not sure whether this worked before, as we didn't
have appropriate unit tests, but it certainly didn't work with CVS
code).
I introduced QueryMetadata.getCacheKey() as a way to find how to
cache a query result. This allows indirect queries (such as
NamedQuery) to use a cache key in runtime that is different from its
name. Thus we can correctly cache results obtained for the same
query, but different sets of parameters.
* Added two more cache types: QueryMetadata.LOCAL_CACHE_REFRESH and
QueryMetadata.SHARED_CACHE_REFRESH. These basically tell Cayenne "I
want current cache to be expired, and the new result to be cached".
My feeling is that "setRefreshingObjects" (that was used before for
refresh purposes) was a hack because it meant something entirely
different (refresh individual objects). For instance if a query
stored in a map had both caching and refresh checked in the Modeler,
it would never work from cache, but always store the results. Makes
no sense.
I need to load this info to Wiki, but I figured I post it here first.
Andrus
This archive was generated by hypermail 2.0.0 : Sun Feb 12 2006 - 01:19:20 EST