【问题标题】:How to customize Ehcache key?如何自定义 Ehcache 键?
【发布时间】:2022-09-30 00:03:09
【问题描述】:

我在 Java 应用程序中使用 ehcache 作为休眠 l2 缓存。 我想要一种可以自定义缓存键的方法,因此将来我会将对象 ID 转换为缓存键并将其逐出。

有没有办法自定义存储在缓存中的密钥?

    标签: java hibernate caching ehcache


    【解决方案1】:

    您可以通过提供自定义org.hibernate.cache.spi.CacheKeysFactory 实现来自定义缓存键,但要做到这一点,您需要注册自定义org.hibernate.cache.spi.CacheImplementor 服务,可能扩展org.hibernate.cache.internal.EnabledCaching,或自定义org.hibernate.cache.spi.RegionFactory 服务,可能扩展org.hibernate.cache.jcache.internal.JCacheRegionFactory

    这很麻烦,但如果你真的愿意,你可以做到。不过,您可以轻松地通过对象 id 创建缓存键,就像 Hibernate 一样。然后,您也应该能够手动逐出条目。

    对于实体,您可以确定EntityDataAccessEntityPersister#getCacheAccessStrategy(),对于集合,您可以确定CollectionDataAccessCollectionPersister#getCacheAccessStrategy()。这两种类型提供了一个名为generateCacheKey 的方法,它负责创建缓存键,它委托给CacheKeysFactory。这些类型的好处是,它们还有evict 方法,因此您不必关心Hibernate 可能对缓存名称进行的名称修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      相关资源
      最近更新 更多