1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-10 00:41:37 +08:00

Update spring-transaction.md

This commit is contained in:
shuang.kou 2020-05-12 15:48:07 +08:00
parent ef681091d9
commit 16c6e1ef9f

View File

@ -1,6 +1,6 @@
大家好我是Guide哥答应读者的 **Spring 事务**分析总结终于来了。这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。 大家好,我是 Guide 哥,前段答应读者的 **Spring 事务**分析总结终于来了。这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。
如果本文有任何不对或者需要完善的地方请帮忙指出Guide哥感激不尽本文已经同步更新到我的 JavaGuide ,地址: 如果本文有任何不对或者需要完善的地方请帮忙指出Guide 哥感激不尽!
## 1. 什么是事务? ## 1. 什么是事务?
@ -8,7 +8,7 @@
_Guide 哥大家应该都能背上面这句话了下面我结合我们日常的真实开发来谈一谈。_ _Guide 哥大家应该都能背上面这句话了下面我结合我们日常的真实开发来谈一谈。_
**我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 `savePerson()` 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。** 我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 `savePerson()` 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。
```java ```java
public void savePerson() { public void savePerson() {
@ -17,7 +17,7 @@ _Guide 哥:大家应该都能背上面这句话了,下面我结合我们日
} }
``` ```
另外,需要格外注意的是:**事务能否生效数据库引擎是否支持事务是关键。常用的 MySQL 数据库默认使用支持事务的`innodb`引擎。但是,如果把数据库引擎变为 myisam那么程序也就不再支持事务了** 另外,需要格外注意的是:**事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的`innodb`引擎。但是,如果把数据库引擎变为 `myisam`,那么程序也就不再支持事务了!**
事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作就是: 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作就是:
@ -35,7 +35,8 @@ public class OrdersService {
this.accountDao = accountDao; this.accountDao = accountDao;
} }
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false, timeout = -1) @Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.DEFAULT, readOnly = false, timeout = -1)
public void accountMoney() { public void accountMoney() {
//小红账户多1000 //小红账户多1000
accountDao.addMoney(1000,xiaohong); accountDao.addMoney(1000,xiaohong);