java - Spring JPA 和 Streaming - 数据是否增量获取?

标签 java spring spring-data-jpa

我正在看streaming query results Spring 文档的部分。此功能是否一次获取所有数据但将其作为流提供?或者它是否增量地获取数据以提高内存效率?

如果它不增量获取数据,是否有其他方法可以使用 spring data jpa 实现此目的?

最佳答案

这取决于您的平台。

Instead of simply wrapping the query results in a Stream data store specific methods are used to perform the streaming.

以 MySQL 为例,流式传输在 truly streaming fashion 中执行,但是当然,如​​果底层数据存储(或正在使用的驱动程序)不支持这种机制(尚),那么它不会产生任何影响。

MySQL 是 IIRC 目前唯一能够以这种方式提供流式传输而无需额外配置的驱动程序,而其他数据库/驱动程序则采用标准获取大小设置,如受人尊敬的 Vlad Mihalcea 所描述:https://vladmihalcea.com/whats-new-in-jpa-2-2-stream-the-result-of-a-query-execution/ ,注意性能与内存使用之间的权衡。其他数据库很可能需要 reactive database client以便执行真正的流式传输。

无论底层流方法是什么,影响最大的是处理流的方式。例如,使用 Spring 的 StreamingResponseBody 可以让您以最少的内存使用将大量数据直接从数据库流式传输到客户端。但这仍然是一个非常具体的用例,因此,除非您确定值得,否则暂时不要开始流式传输所有内容。

关于java - Spring JPA 和 Streaming - 数据是否增量获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49301019/

相关文章:

java - 如何通过名称获取 "public static final int"值?

java - sleep VS AlarmManager.set AND AlarmManager.setRepeating VS Handler

javascript - 使用 Spring 框架开发 Web 应用程序的推荐 javascript 框架是什么?

spring-data-jpa - JpaRepository 的 Spring Data REST 自定义查找器

enums - 如何使用否定枚举常量编写 spring data jpa 查询方法?

Java swing sleep 命令

java - 应用程序关闭Android

java - 方法上的 NullPointerException (NativeMethodAccessorImpl.invoke0(Native Method)

java - 如何使用 Camel 和 Jackson 库将嵌套的键值对编码到 JSON 中?

java - 将结果限制为 1