Watch Spring's @Cacheable at work: a hit skips the database, a miss loads and stores, entries expire on TTL, and @CachePut / @CacheEvict update or clear the cache. The cache-aside pattern, made visible.
@CachePut always hits the DB and refreshes the entry (new rev); @CacheEvict removes it so the next read misses again. With TTL on, wait ~7s and the entry expires — the next call reloads it.