Caching update

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Feb 12 2006 - 01:19:13 EST

  • Next message: Cris Daniluk: "Re: Caching update"

    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