# A rollback does not roll the cache back

cacheManager : org.springframework.cache.concurrent.ConcurrentMapCacheManager

nameOf(1) -> Alice

An outer @Transactional method calls the @CachePut update, which succeeds,
and then fails on the next step. The transaction rolls back.

what the cache serves : Alice Cooper
what the database has : Alice

The cache is now holding a name that no transaction ever committed. Nothing
will correct it until the entry expires or something evicts it.

--- the same shape with @CacheEvict ---
nameOf(2) -> Bob
after the rollback, nameOf(2) -> Bob
database loads: 2   <- the entry was evicted, so this one reloaded

An eviction that fires too early is self-healing: the next read goes to the
database and re-populates correctly. A @CachePut that fires too early is not.
