Решил сделать два интерфейса репозитория:
- с доступом на чтение;
- с полным доступом.
Доступ на чтение будем предоставлять пользователям кеша. Какой в этом смысл? Смысл такой, что наши пользователи не смогут писать в кеш. Смогут только читать из него. Такова идея этого проекта. Если в каком-то другом проекте понадобится доступ пользователям на запись в кеш, тогда разделять репозиторий на два интерфейса будет не нужно.
Вот такие два интерфейса получились:
public interface ReadCacheRepository<K, V> { Optional<V> findById(K id); boolean existsById(K id); long count(); }
public interface CacheRepository<K, V> extends ReadCacheRepository<K, V> { void save(V value); void deleteById(K key); }
Как я уже писал ранее, кеш Apache Ignite имеет интерфейс почти такой же, как у HashMap.