Tom - one further question re queryResults caching -
if I run queryA which returns object X,Y,Z which are cached
and then and update one of those objects, does the query results
cache know or get told enough to clear the results for queryA so
re running it will go to the database instead of returning a
stale result ?
thanks
http://wiki.eclipse.org/Introduction_to_EclipseLink_Queries_%28ELUG%29#How_to_Cache_Query_Results_in_the_Query_CacheHow to Cache Query Results in the Query Cache
In addition to EclipseLink's object cache, EclipseLink also
supports a query cache. There is the following distinction between
the two:
- The object cache indexes objects by their primary
key, allowing primary key queries to obtain cache hits. By using
the object cache, queries that access the data source can avoid
the cost of building the objects and their relationships if the
object is already present.
- The query cache is distinct from the object cache.
The query cache is indexed by the query and the query
parameters–not the object's primary key. This allows for any
query executed with the same parameters to obtain a query cache
hit and return the same result set.
On 09/03/2012 14:14, Tom Ware wrote:
The
hint can be added to all queries. Obviously it will improve
performance more for queries that are executed more often. (named
queries are a good candidate here)
Queries are actually cloned before we apply query hints to them,
so the SessionCustomizer option listed below may be what you want
for certain queries. (since it will affect the query every time
it is looked up rather than just the instance you get from
em.createQuery()).
BTW: Some doc:
http://wiki.eclipse.org/Introduction_to_EclipseLink_Queries_(ELUG)#How_to_Cache_Query_Results_in_the_Query_Cache
-Tom
On 09/03/2012 8:49 AM, Tim Martin wrote:
Just to check - the hint can only be added
to named ? not those built on the fly
(which of course we are doing are best to avoid :)
On 09/03/2012 13:45, Tom Ware wrote:
There is no setting to do this
universally for a whole persistence unit. It
should be possible to do this using EclipseLink-native API in
a
SessionCustomizer by iterating through the queries defined in
the query
manager and calling the required native API to set it up. The
timeouts could
be set in the same code.
The reason there is no universal setting is that it is not
clear that this
would be desirable in most use-cases. EclipseLink already has
a cache that
provides quite a bit of performance boost and the query
results cache is
intended to provide an additional performance boost for
selected queries.
Using the query cache requires an understanding about the
degree to which
results may be stale when they come back.
-Tom
On 09/03/2012 8:16 AM, Tim Martin wrote:
Hi - anyone know if there is a valid
property to use in the persistence.xml to
cache all query results by name and parameter values.
So rather than putting a hint on the queries we can do
something like
<property name="eclipselink.query-results-cache"
value="true"/>
I've come across it searching in google - but not come
across anything
defintive...
If so - how would we configure expiration of the cache ?
something simple like
expire everything every x minutes would do to start with..
Thanks
Tim
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
|