Spring Batch中的作业级别事务性

时间:2012-09-19 09:41:44

标签: spring-batch transactional

我现在知道Spring-Batch中没有跨步事务性这样的东西。我正在开发一个复杂的批处理作业,其中有许多步骤在数据库中执行多个操作,并且每个步骤都与其他操作相关,这样它们中的每一个都属于同一个事务。我理解Spring-Batch范例的方式为了获得事务性,我必然会使用一步到位的工作。在最近或将来的版本中是否有任何想法(或任何其他方式)具有某种工作级别的交易性?

Edit1:我在这个link中找到了点6.3.1,这是一种连接多个处理器的方法,但这并不能满足我当前的需求。

Edit2:另一个link建议我使用带有“@Transactional”注释的信封类来调用我的工作,因此应该有一个外部交易。

1 个答案:

答案 0 :(得分:2)

最后,我找到了一种方法。如上一版所述,您必须从事务方法调用该作业:

@Transactional(传播= Propagation.REQUIRED)

将传播级别设置为此级别所需的非常重要。并将作业级别传播设置为“强制”,通过此工作和步骤将其事务添加到当前。尽管如此,正如迈克尔·兰格所写,为了避免超出限制的提交或回滚,考虑您正在管理的潜在卷大小非常重要。