小编Sol*_*ris的帖子

如何使用spring缓存抽象返回条目数

我使用spring cache abstraction来缓存服务层中的对象.这适用于简单的get/put操作,如下所示:

static private final String cacheName = "messages";

@CacheEvict(value=cacheName, key="#message.id")
public void deleteMessage(Message message) {
...
}

@Cacheable(value=cacheName, key="#id")
public Message findMessage(Long id) {
...
}

@CachePut(value=cacheName, key="#message.id")
public void saveMessage(Message message) {
...
}

@CachePut(value=cacheName, key="#message.id")
public Message updateMessage(Message message) {
...
}
Run Code Online (Sandbox Code Playgroud)

但是,我将使用什么注释用于以下方法:

public long countAllMessages() {
...
}
Run Code Online (Sandbox Code Playgroud)

由于所有对象都在缓存中,因此应该有一种方法可以从缓存中获取答案,而不必转到存储库层.

此外,缓存正在应用于以下方法:

@Cacheable(cacheName)
public List<Message> findAllMessages() {
...
}
Run Code Online (Sandbox Code Playgroud)

我可以使count方法调用find all方法,如下所示:

public long countAllMessages() {
    return findAllMessages().size();
}
Run Code Online (Sandbox Code Playgroud)

但是在禁用缓存的情况下这不会有效,因为调用会从db加载所有记录而不是执行SELECT COUNT(*)...

java spring caching

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

caching ×1

java ×1

spring ×1