首先事务从哪层开启的?为什么是service层而不是mapper层?
Service开启的。
因为业务逻辑写在service层,它得保证事务得四大特性,调用多个方法得时候使用一个事务,所以写在service层,如果写在mapper层,没有办法做到多个方法用一个事务,并且是通过spring来管理数据库得事务的
事务问的比较多:四大特性(ACID)
原子性:
概念型理解:事务是不可分割的一部分,要么同时执行成功,要么集体回滚,比如一个方法中管理了多个方法,如果其中有一个执行失败,集体回滚。
业务型理解:我有一百块钱,给你转五十,转账过程中出现问题,不会扣除我的钱,你的钱也不会增加。
一致性:
概念型理解:是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
业务型理解:我有一百块钱,给你转五十,我还剩五十,咱们两个相加还是一百。
隔离性:
概念型理解:事务之间是相互隔离,互相不受打扰。
业务型理解:我给你转账的过程中,是不允许立马执行查询的,必须等待转账成功后,再执行查询的操作。
排它锁、行级锁、表级锁
持久性:
概念型理解:事务一旦提交,不再执行修改事务的情况下,它就是永久性的保存的。
业务型理解:服务器宕机了,电脑坏掉了,数据还有吗?一定是有的,因为它持久化了。
spring四大特性
最新推荐文章于 2022-08-16 20:11:09 发布