Andrus Adamchik <andru..bjectstyle.org> wrote:
> 1. Use Cayenne built-in remote notifications.
> Good thing about snapshot
> events is that you can tell the listener exactly which objects were
Thanks. The batch job updates hundreds of thousands of account objects,
most of which aren't used by my web application, so providing a list of
which objects were modified is probably not a good strategy in this case.
> 2. Continue using LAST_EXTERNAL_UPDATE and manually invalidate cache.
> Here is one (but not the only) way to do that for just the shared
> entities. For each "shared" entity create a named query in the Modeler
> with Result Caching policy of "Shared Cache". Whenever you detect from
> LAST_EXTERNAL_UPDATE that refresh is needed, you can do a refresh like
> 2a. Call "DateRowStore.cacheSnapshots("query_name", null) for each
> "shared" query. This assumes that all your DataContexts access shared
> object via such queries, and in no other way, and also that you don't
> mind stale data in existing DataContexts.
> 2b. Call DataContext.performQuery("query_name", true) for each shared
> query. This will give you fresh objects immediately and as a side
> effect refresh shared cache.
The problem is that my account objects are loaded indirectly. I don't pull
them in as a result of an explicit query, but only as the result of
referencing a relationship getter method on other objects.
Is there a way to handle this without using a shared cache?
What about using
to iterate through all objects (does the above get all objects or only
objects registered to a particular DataContext?), and then invalidating all
objects of a specific (in this case "account") class?
I don't mind having stale data in existing datacontexts, so long as when new
contexts are created via BasicServletConfiguration.getDefaultContext(), they
have current data.
This archive was generated by hypermail 2.0.0 : Mon Nov 22 2004 - 11:28:18 EST