在面向块的步骤中执行数据库操作

Execute database operations inside a chunck orientad step

我有一个面向块的处理器,形式为 "reader / processor / writer",称为 Job1。如果可能的话,我必须在这个作业结束后在同一个事务中执行数据库 EJB 操作。我还有其他工作(由 Tasklet 实现),我可以用一种简单的方式做到这一点。我这个工作我只是在完成执行方法之前在 tasklet 中调用这个操作。但在这种情况下,我不知道正确的做法。在第一次尝试中,我通过一个步骤监听器(外部事务)实现了它。但是我不能,因为我公司有uma架构规则不要在监听器中调用数据库操作。我可以在这个步骤之后在 tasklet 的另一个步骤中执行它,如果我找不到更好的,我会这样做,但是如果可能的话,我喜欢在 Job1 的同一个事务中执行这个操作。

几个注意事项:

  1. 在基于块的步骤 (reader/processor/writer) 中,通常您会有多个事务。每个块一个。
  2. 由于 1,您通常不能在处理项目的同一事务中的步骤结束时执行数据库调用。它们是在多个事务中处理的。

话虽这么说,但听上去,最好的选择是将您的调用放在基于块的调用之后的另一个步骤中。