关于以编程方式将 Ehcache 配置为 Hibernate 二级缓存,当您使用 Ehcache 2.x 和net.sf.ehcache.hibernate.EhCacheRegionFactory
. 您将必须扩展工厂类并使其配置CacheManager
为使用。
对于带有 JCache 的 Hibernate 5.2,使用 Ehcache 3.x 作为提供者,有一个更简单的路径:确保首先配置 JCache CacheManager
,然后让 Hibernate 使用配置的那个。作为替代方案,您可以扩展org.hibernate.cache.jcache.JCacheRegionFactory
和适应CacheManager
和Cache
创建。以下示例可以帮助您弄清楚。
关于第二点:
Spring 缓存是一种通用抽象,可以在应用程序的所有层中使用,您可以在其中决定缓存什么、从哪个调用等...
Hibernate 二级缓存是位于对象模型和数据库访问之间的专用缓存。您告诉框架使用哪些语义缓存什么,但实际工作对您隐藏。
您当然可以将两者结合在一个应用程序中,您可以在其中缓存更高级别的结果,例如使用 Spring Cache 缓存服务调用结果或网页,以及使用 Hibernate 2LC 缓存实体/查询结果。尽管我建议使用不同Cache
的方法来很好地分离它们的内容和生命周期。