识别数据库中的一组条目

Identify a Group of Entries in Database

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

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

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

我通过在我的数据库中添加一个序列,在我的配置中添加以下 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() 方法生成序列增量并获取新数字。