Spring boot JPA和外部API调用的事务管理

Spring boot JPA和外部API调用的事务管理,spring-boot,spring-transactions,Spring Boot,Spring Transactions,我是spring新手,开始在项目中使用spring boot。我们有一个将数据库更改和很少的外部API调用作为一个事务来实现的用例。请建议,spring@transactional是否可以实现这一点?使用@transactional进行多个数据库更改,因为一个事务当然可以通过注释实现,但对于外部API调用则不太可能。为此,您必须实现一些自定义逻辑——例如,必须有端点来撤消上一个操作,并且必须在try-catch块中实现手动调用它们。例如,如果外部API调用创建了一个项,那么还必须有一个端点来删除

我是spring新手,开始在项目中使用spring boot。我们有一个将数据库更改和很少的外部API调用作为一个事务来实现的用例。请建议,spring@transactional是否可以实现这一点?

使用
@transactional
进行多个数据库更改,因为一个事务当然可以通过注释实现,但对于外部API调用则不太可能。为此,您必须实现一些自定义逻辑——例如,必须有端点来撤消上一个操作,并且必须在try-catch块中实现手动调用它们。例如,如果外部API调用创建了一个项,那么还必须有一个端点来删除一个项,以此类推


因此,总结一下-使用
@Transactional
注释作为一个事务来实现数据库更改是可以的,但不足以实现外部API调用。

API调用是否需要成为事务的一部分

如果答案是否定的,我建议使用
TransactionTemplate.doInTransaction()
将API请求留在Tx之外

如果您需要在Tx内发出API请求,我建议您不要这样做,您将在这些请求期间锁定DB资源

您还可以搜索并找到有关
最终一致性
模型的更多信息