什么是事务
在我理解看来,事务就是说做某一件事,这件事的可大可小;比如说:“去做饭了”,这就是一个事务;其中做饭这件事情中你也可以拆成许多小事情,比如说:“去买菜”、“去洗菜”、“去炒菜”、等,这些也都是一个事务;同样在我们系统中,你去点击某个按钮去完成某一个业务操作,这你也可以把她看做一件事务;而在这个操作中,可能会有一些新增、删除等行为,这些也都可以看做一个事务。
但是实际我们定义的事务是具有一定特性的,比如,你做饭,可能做一半就不做了,这在现实生活中是存在的;但是对于一个事物来说,你要么就是把饭做完了,要么就没有做,就这两种状态,不会存在中间的状态。
事务的特性
我们上边说了事务都具有一定的特性,总体上有这么4种:
- 原子性:要么都是成功的,要么都是失败的。比如你做饭这件事,有多种行为,买菜、洗菜、炒菜等,要么这些行为你就都做了,要么这些行为你都没做;不会有只买了菜但没有洗、炒这种情况
- 一致性:一个事务中要么都是操作之前的状态、要么都是操作之后的状态;(和原子性有区别、原子性强调有没有做成功,一致性强调的是事务的状态)
- 隔离性:多个事物之间互不影响
- 持久性:事务提交成功后,数据的修改永久生效
什么是数据库事务
这是数据库自有的,比如myql,通常我们每次修改都是默认自动提交的,这就是执行了一个事务;这样看来我们每一个修改行为都可以看做一次mysql数据库的事务。
但是如果是oracle,默认的好像是我们要手动敲写commit命令,这个事务才会提交;但是我们可能执行了多次修改才执行的commit命令,所以这多次修改我们也可以看做一次事务。
(当然Mysql也可以设置为手动提交)
什么是Spring事务
Spring事务其实本质上来说是对数据库事务的封装,它是拿到数据库的连接,可能在这次连接中执行一次或者多次数据库操作,然后再由spring来控制数据库事务的提交或者回滚,当然这其中Spring对事务管理还有一些更好的优化等。
















