Можно ли использовать кэш второго уровня Hibernate для операций COUNT ()? - PullRequest
3 голосов
/ 03 января 2012

При использовании Hibernate и Ehcache в качестве реализации кэша второго уровня (2LC) (или может) этот кэш используется при выполнении операций COUNT с предложением WHERE?

В терминах SQL запросвыполнение SELECT COUNT(id) FROM table WHERE someColumn > 100.В некоторых случаях переданное значение будет отличаться каждый раз, иногда оно всегда будет одинаковым.

Я предполагаю, что это выходит за рамки 2LC, и вместо этого необходимо будет управлять «вручную» (кэшировать результат запроса и аннулировать этот кеш при каждом изменении базовых данных.

1 Ответ

4 голосов
/ 03 января 2012

Вы правы, это то, что предлагает кэш L2.Однако кэш запросов справится с задачей.

В основном Hibernate будет кэшировать сопоставление между именованными параметрами ([100] tuple в вашем примере) и результатом запроса в кэш с именем org.hibernate.cache.StandardQueryCache.Он также сделает недействительным кеш, когда любые изменения будут сделаны в table (точнее: любая таблица, которая используется в запросе).Время последнего изменения каждой таблицы хранится в кэше org.hibernate.cache.UpdateTimestampsCache.

См. Также:

...