If we look back at our quote manager application, we have the following layers through which a request goes:
- Servlet
- JAX-RS
- Service layer (@Transactional)
- JPA
You can add some caching (such as JCache, not HTTP, which is more a client data management solution) to all the layers. On the Servlet side, you can cache the responses using the requests as key. In JAX-RS, you can do the same, but in a more business-oriented manner. In the service layer, you can use CDI JCache integration. And in JPA, you can use level 2 caching, which can be implemented with JCache or a provider-specific implementation—this generally just requires configuration to be set up so that the API is not very crucial.
However, if you configure the caching on ...