Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如果我们在数据库级别进行事务管理,那么为什么我们要在代码中进行事务管理呢_Spring_Transactions - Fatal编程技术网

Spring 如果我们在数据库级别进行事务管理,那么为什么我们要在代码中进行事务管理呢

Spring 如果我们在数据库级别进行事务管理,那么为什么我们要在代码中进行事务管理呢,spring,transactions,Spring,Transactions,我正在浏览Spring提供的事务管理,但出于好奇,我想知道事务管理是否由数据库提供,而不是为什么我们使用JTA、Spring等提供的跨国管理。事实上,您完全可以避免在代码中使用事务注释(基本上,您应该坚持这种方法),因为每个事务都将在每次成功的DB调用中隐式提交 但是有时您必须在一次交易中进行多个操作(查询):取款(从账户表)和发货(从存储表)。在这种情况下,您无法避免交易管理: class Processor { ... @Transactional void purc

我正在浏览Spring提供的事务管理,但出于好奇,我想知道事务管理是否由数据库提供,而不是为什么我们使用JTA、Spring等提供的跨国管理。

事实上,您完全可以避免在代码中使用事务注释(基本上,您应该坚持这种方法),因为每个事务都将在每次成功的DB调用中隐式提交

但是有时您必须在一次交易中进行多个操作(查询):取款(从
账户
表)和发货(从
存储
表)。在这种情况下,您无法避免交易管理:

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