Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: Antw.: [eclipselink-users] Caching read-all queries

Hi Zarar,

EclipseLink assumes multiple applications will be updating your database. With multiple applications, there is the possibility that rows will be added to tables outside of the knowledge of a single application. As a result when you Read All objects, EclipseLink cannot assume it's cache knows about all the objects - therefore, it must go to the DB to retrieve the IDs of the objects that the query should return. After the IDs are returned the cache is used for optimization.

If your application is designed in such a way that you know that it is the only application that will touch the database, or that you don't care what other applications add, there are a number of EclipseLink features that allow you to do Cache-only queries. You can run queries that check the cache only, and you can run queries that cache their results and always return those results. The question is, is that really what you want?


Zarar Siddiqi wrote:

So queries like returning a list of states or last year's items sold
will always result in a query being executed? I find it really hard to
believe that it's a feature that is lacking.


On Thursday, May 20, 2010, JAAP SPIERING <jaap.spiering@xxxxxxxxxx> wrote:
Hi Zahar,
I believe this question popped up on this list a couple of days ago as well, but I couldn't find it anymore.Anyway, ReadAllQueries always hit the database, because they need to determine what records are to be returned (there might be different ones in the database compared to when your query was last executed). When records are returned that are already stored in the cache, it will return the corresponding cached objects so there is some optimization there.
----- Oorspronkelijk bericht -----
Van: zarars@xxxxxxxxx
Aan: eclipselink-users@xxxxxxxxxxx
Verzonden: Donderdag 20 mei 2010 00:11:39 GMT +01:00 Amsterdam / Berlijn / Bern / Rome / St!
 ockholm / Wenen
Onderwerp: [eclipselink-users] Caching read-all queries

I'm using 1.2 and have a couple cache related questions.

Do read-all queries (ones using getResultList()) always hit the database?

As I understand the docs, the "CheckCacheThenDatabase" hit only
applies to read-object queries (ones using getSingleResult()).  In my
app, I have a ton of queries that are candidates for caching, but they
all use getResultList(). I've set an @Cache(expiry=60000) annotation
on those entities and when I execute them, I keep seeing the queries
printed in the logs.

To me, this isn't the greatest behaviour since I'm executing the exact
same query with the exact same parameters.  Shouldn't EclipseLink have
a way of optimizing this?

eclipselink-users mailing list

Back to the top