【问题标题】:Identify a Group of Entries in Database识别数据库中的一组条目
【发布时间】:2016-01-10 02:59:16
【问题描述】:

我正在使用 Spring Batch 从数据库中读取条目并相应地处理它们。到目前为止,我编写了条目,将它们的所有主键存储在一个列表中,并将该列表设置为 Job 的参数之一。这适用于小批量,但如果有 100 个条目,则列表会变大以存储为参数。所以我打算存储一些排序或唯一字段,这些字段对于与同一作业有关的所有条目都是通用的,并且只将此键作为参数传递,我之前考虑过使用作业执行 ID,但这是在作业启动后生成的,所以当读者初始化时,可能为时已晚。所以我想到了以下选项:

  1. 使用日期/时间、提交作业的人的用户名等字段生成哈希。问题:有什么好的算法可以做到这一点?
  2. 生成一个可递增的 ID。 问题:最好的方法是什么? 问题:在这种情况下可以使用 PostgreSQl 序列吗? (注意:多个条目将具有相同的密钥,因此我认为不能使用 @GeneratedValue 注释来完成,如果我错了,请纠正我)
  3. 您有更好的想法吗?

我认为,如果您解释为什么您可能更喜欢一种解决方案而不是另一种解决方案,我认为这也是有益的。

【问题讨论】:

    标签: spring postgresql jpa spring-batch


    【解决方案1】:

    我通过在我的数据库中添加一个序列解决了这个问题,在我的配置中添加了以下 bean:

    <bean id="batchSequence" class="org.springframework.jdbc.support.incrementer.PostgreSQLSequenceMaxValueIncrementer">
        <property name="dataSource" ref="dataSource" />
        <property name="incrementerName" value="batch_id" />
    </bean>
    

    在必要时自动装配上述 bean,然后使用 nextLongValue() 方法生成序列增量并获取新数字。

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-22
      • 2023-01-06
      相关资源
      最近更新 更多