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

时间:2018-02-15 19:13:16

标签: spring-boot spring-transactions

我是春天新手,开始为项目使用弹簧靴。我们有一个用例来实现数据库更改和很少的外部API调用作为一个事务。请建议,这可能与春天@transactional?

2 个答案:

答案 0 :(得分:0)

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

总而言之 - 使用@Transactional注释来实现数据库更改,因为一个事务很好,但对于外部API调用来说还不够。

答案 1 :(得分:0)

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

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

如果您需要在Tx中发出API请求,我会建议您反对它,您将在这些请求期间锁定数据库资源。

您还可以搜索并了解有关eventual consistency模型的更多信息。