【问题标题】:How to include 2 pagebles in same method?如何在同一方法中包含 2 个页面?
【发布时间】:2020-02-14 10:49:14
【问题描述】:

我正在使用 Oracle Db、hibernate 和 spring data jpa。我正在尝试实现spring批处理分区。

我有一个需要进行 2 个分页的要求。我将做第一个分区,然后在每个分区内,我需要再次进行分页,所以我不会一次加载整个分区块。

假设我们总共有 10000 条数据记录。首先,我需要将它分成 10 个块,这是第一个分页。然后对于这些单独的块,我需要做另一个分页来处理那个块。每个块将有 1000 条记录,再进行一次分页将导致每页 100 条。

我的问题是有没有办法实现这种行为? Spring data jpa 只允许 1 页。

需要一些公会路线。我在正确的轨道上吗?

【问题讨论】:

    标签: hibernate oracle11g spring-data-jpa spring-batch oracle-sqldeveloper


    【解决方案1】:

    我发现“分区”、“页面”和“块”术语之间存在混淆,所以让我使用您的示例从 Spring Batch 方面澄清术语:

    如果您总共要处理 10.000 条记录,则可以使用具有 10 个分区(称为“块”)的 Spring Batch 分区步骤。每个分区将由 1000 条记录组成。

    现在在每个分区中,块大小是关键。对于 100 的块大小,每个分区将分为 10 个(因此单个分区有 10 个事务)。

    现在对于每块 100 个项目,页面大小是关键。如果您将页面大小设置为 10,您的阅读器将执行 10 次读取操作来创建一个块。通常最好使用page size match the chunk size 以获得更好的性能。

    因此,总而言之,要回答您的问题,无需进行 2 分页。你所说的“第一次分页”其实就是分区一个步骤的过程,而你所说的“第二次分页”是Spring Batch的面向块的处理模型加上一个分页项阅读器在每个分区中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2016-04-23
      • 2017-03-01
      • 2011-08-12
      • 2011-08-04
      • 2016-05-02
      相关资源
      最近更新 更多