Spring Batch 事务限制

Spring Batch 事务限制对 Spring Batch 有所了解的同学都知道 Batch 是用来进行批量数据处理的 但是 Spring Batch 中 如果使用了 Tasklet 的话 那么 Spring 会在 Tasklet 级别创建一个事务

大家好,欢迎来到IT知识分享网。

对 Spring Batch 有所了解的同学都知道 Batch 是用来进行批量数据处理的。

但是我们在同时使用 Spring JPA 的时候,尤其是循环数据处理的时候,我们希望能够尽快提交事务。

但是,Spring Batch 中,如果使用了 Tasklet 的话,那么Spring 会在 Tasklet 级别创建一个事务。

在 Tasklet 不完成的情况下,事务是不会提交的。

这就需要对我们代码进行进行处理的时候,需要对数据量有多大有比较清楚的了解。

否则,非常容易遇到事务堆叠导致锁表的情况。

解决办法

针对一个 Tasklet 只完成一个特定的工作,如果 Job 的处理数据比较多的话,需要分开不同的 Tasklet 来做。

Spring Batch 事务限制

如上图,哪怕我们在这里调用了不同的服务,调用了不同的数据层。

事务都是没有办法提交的。

简单的办法就是针对上面的操作使用不同的 Tasklet 来做。

有人问过,能不能在循环中一次一次的进行提交。

Spring Batch 这样设计的目的就是为了保持数据的完整性,因此需要对 Batch 的逻辑进行考虑,而不建议考虑怎么省事怎么来。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108717.html

(0)
上一篇 2024-11-07 18:26
下一篇 2024-11-14 21:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信