如何缓存Spring JPA分页计数数据?

时间:2019-12-11 23:22:05

标签: spring hibernate spring-boot jpa spring-data-jpa

我正在用JPA创建一个简单的Spring Boot应用程序。我有数百万条记录,可以从数据库中检索它。在我的存储库中,当我调用findAll(Pageable pageable)时,它将获取我想要的记录。

但是需要很多时间才能将记录的子集退还给我。我发现这是由于count查询引起的。

有没有一种方法可以在第一次调用后缓存page响应?

1 个答案:

答案 0 :(得分:-1)

很容易看出为什么计数要比选择花费更多的时间,因为选择通常有限制,但是选择计数可能需要全表扫描。

在jpa中不支持缓存page,因为数据一直在变化。

如果只想显示数据(不需要支持其他过滤显示),则可以缓存count而不使用findAll(Pageable pageable),则需要查询数据(使用本机查询),组装一个Page对象并将其返回到前端。

当然,您需要在count时更新insert/delete

也许您不需要支持显示确切的页面,或者可以使用其他类型的数据库,例如Elasticsearch

福尔摩(Futhermore):请参见:link可能会有帮助?