# Caching an entity caches a detached object, lazy proxies and all

loadEntity(1) -> Alice (com.ankurm.caching.jpa.Customer)
database loads: 1
second call returns the same instance? true
database loads: 1

--- touching the lazy collection outside the session ---
org.hibernate.LazyInitializationException
  Cannot lazily initialize collection of role 'com.ankurm.caching.jpa.Customer.orders' with key '1' (no session)

This is the line between the two caches. Hibernate's second-level cache
stores dehydrated entity state and rebuilds a managed entity inside a
session, so lazy associations still work. The Spring cache abstraction
stores the object your method returned, exactly as it was when the
transaction ended - detached, with whatever its proxies were holding.
