CacheLoader не вызывается при попытке найти сущность с помощью GemfireRepository - PullRequest
0 голосов
/ 15 марта 2020

CacheLoader не вызывается при попытке найти сущность с использованием GemfireRepository.

В качестве решения я использую Region<K,V> для поиска, который вызывает CacheLoader. Поэтому хотелось узнать, существует ли какое-либо ограничение для Spring Data Repository, которое не позволяет вызывать CacheLoader, когда запись отсутствует в кэше.

И, является Есть ли другая альтернатива? Потому что у меня есть еще один сценарий, где мой ключ кеша - это комбинация id1 и id2, и я хочу получить все записи на основе id1 . И если в кеше нет записи, она вызовет CacheLoader, чтобы загрузить все записи из хранилища Cassandra.

1 Ответ

0 голосов
/ 16 марта 2020

Нет никаких ограничений или ограничений в SDG при использовании абстракции SD Repository (и расширения репозитория SDG), которая предотвратит вызов CacheLoader, если CacheLoader был должным образом зарегистрирован на цели Region. После того как управление передано GemFire ​​/ Geode для завершения операции доступа к данным (CRUD), оно не в руках SDG.

Однако вы должны знать, что GemFire ​​/ Geode вызывает только CacheLoaders для , получает (т.е. Region.get(key) операций), но не для (OQL) запросов. Запросы OQL вызываются из производных методов запросов или пользовательских пользовательских методов запросов, используя @Query аннотированные методы, объявленные в интерфейсе приложения Репозиторий .

ПРИМЕЧАНИЕ. См. Apache Geode CacheLoader Javado c и Руководство пользователя для получения более подробной информации.

Для простого CrudRepository.findById(key) вызова, вызова стек следует из ...

  1. SimplyGemfireRepository.findById(key)
  2. GemfireTemplate.get(key)
  3. А затем Region.get(key) (из здесь ).

В качестве примера и для иллюстрации этого поведения я добавил o.s.d.g.repository.sample.RepositoryDataAccessOnRegionUsingCacheLoaderIntegrationTests в набор тестов SDG как часть DATAGEODE-308 . При необходимости вы можете предоставить дополнительную обратную связь в этом билете JIRA.

Приветствия!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...