0

我正在开发一个使用 Java(JDK 1.8)、Spring MVC(Restful Web 服务层)4.x、Hibernate 5.x、MYSQL Db 和 Tomcat Server 8 开发的 java 应用程序。一切都在 java config 中以编程方式配置并且没有 XML 配置文件。我需要为休眠配置二级缓存。我打算将 EhCache 与应用程序集成。

  1. 这可以通过 Java Config(没有 EhCache.xml 文件)实现吗?
  2. 另一个问题是 spring cache 和 hibernate 二级缓存有什么区别?
4

1 回答 1

1

关于以编程方式将 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和适应CacheManagerCache创建。以下示例可以帮助您弄清楚。

关于第二点:

Spring 缓存是一种通用抽象,可以在应用程序的所有层中使用,您可以在其中决定缓存什么、从哪个调用等...

Hibernate 二级缓存是位于对象模型和数据库访问之间的专用缓存。您告诉框架使用哪些语义缓存什么,但实际工作对您隐藏。

您当然可以将两者结合在一个应用程序中,您可以在其中缓存更高级别的结果,例如使用 Spring Cache 缓存服务调用结果或网页,以及使用 Hibernate 2LC 缓存实体/查询结果。尽管我建议使用不同Cache的方法来很好地分离它们的内容和生命周期。

于 2017-01-27T10:36:16.673 回答