Да, мы можем это сделать. В основном Spring использует Hibernate ORM в качестве реализации JPA. Сам Hibernate поддерживает функциональность кэширования и интегрируется лучше, чем Spring Cache.
Чтобы включить кэш L2, добавьте эти свойства в свой проект и добавьте следующие свойства.
spring.jpa.properties.hibernate.cache.use_second_level_cache = true spring.jpa.properties.hibernate.cache .use_query_cache = true spring.jpa.properties.hibernate.cache.region.factory_class = org.hibernate.cache.ehcacne.EhCacheRegionFactory
и зависимости hibernate-ehcache
Как только это будет сделано, все ваши методы JPA по умолчанию, такие как findOne()
, findAll()
, будут кэшированы.
Если вы добавите какие-либо пользовательские методы, вы можете добавить, как показано ниже:
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") })
Category findByCategory(String Category);
Чтобы проверить, где кэшируются методы по умолчанию, вы можете использовать следующие свойства, чтобы увидеть, было ли выполнено SQL.
spring.jpa.show-sql = true spring.jpa.properties.hibernate.format_sql = правда