I've been working on Cayenne training class material lately. This was the first 
opportunity I had in a long time to look at the big picture as far the the 
current query caching is concerned. A few random comments...

Currently there are three main pieces to a caching solution:

1. QueryCache service in "cayenne-server"
2. "cayenne-jcache" module with extra libs like "ehcache", and custom config 
files
3. "cayenne-cache-invalidation" - allows to flush caches on commit.

With module auto-loading, and "contribute" API, all this is *very* easy to use 
... if you already know what to do. If you don't, you'll bang your head against 
the wall trying to figure out a proper way to add cache. In other words we need 
to document the main recipe - which modules to include and how to pass a config 
file.

Also it is probably more logical to turn off query caching completely in a 
default setting. Currently we use MapQueryCache that is an unmanaged LRU map. I 
think the default should be a dummy no-cache strategy. This will emphasize the 
fact that any real cache management happens outside Cayenne core.

Andrus






Reply via email to