如果我们在数据库级别拥有事务管理,那么为什么我们将事务管理放入代码中

时间:2018-08-22 19:26:36

标签: spring transactions

我正在研究Spring提供的事务管理,但是出于好奇,我想知道我们的事务管理是否由Database提供,而不是为什么我们要使用JTA,Spring等提供的跨国管理。

1 个答案:

答案 0 :(得分:0)

实际上,您可以完全避免在代码中使用事务性注释(基本上应该坚持这种方法)。因为每个事务都会隐式地提交到每个成功的数据库调用上。

但是有时,您必须在一次交易中进行多个操作(查询):从account表中提取资金并从store表中发货。在这种情况下,您无法避免事务管理:

class Processor {
    ...
    @Transactional
    void purchase(){
        accountService.withdraw(200);
        storeService.ship("goods")
    }
}