In order to keep proper abstraction from a particular implementation, we should consider using Spring's abstraction for caching APIs, as well as consider Hibernate's general caching strategies and how these will work with the distributed/federated integration implementation.