没有密钥的JCache直写

时间:2019-02-11 15:29:21

标签: java jcache

我已经对此进行了编码以创建缓存:

private Cache<String, Reference> getOrCreateCache(String name) {
    CacheManager cacheManager = Caching.getCachingProvider().getCacheManager();
    Cache<String, Reference> cache = cacheManager.getCache(name, String.class, Reference.class);

    if (cache == null) {
        CompleteConfiguration<String, Reference> config =
            new MutableConfiguration<String, Reference>()
                .setReadThrough(true)
                .setCacheLoaderFactory(this.referenceCacheLoaderFactory)
                .setWriteThrough(true)
                .setCacheWriterFactory(this.referenceCacheWriterFactory)
                .setTypes(String.class, Reference.class);

        cache = cacheManager.createCache(name, config);
    }

    return cache;
}

如您所见,我已启用write-through策略。

因此,首先使用CacheWriter实现写入缓存的实体。

在我的服务类别中,我有以下代码:

public void create(ReferencePayload reference) {
    this.cache.putIfAbsent("<<<which-key>>>", reference);
}

ReferencePayload没有id字段。

@Data
@NoArgsConstructor
public class ReferencePayload {

    @NotEmpty
    private String transactionId;

    @NotEmpty
    private String codiDirCorp;

    // ...
}

我的意思是,当必须创建实体时,它没有ID。它必须通常在数据库上生成。一旦存储在数据库中,就将其返回。

使用缓存write-trhough策略,如何填充此id字段才能将其用作key缓存。

0 个答案:

没有答案