我已经对此进行了编码以创建缓存:
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
缓存。