什么是事务

一、什么是事务
        事务是一系列的操作,这些操作要么全部成功,要么全部失败。如果说其中一个操作失败,就是已经成功执行的操作都会发生回滚,仿佛什么都没发生过一样。

二、事务的四大特性(ACID)
        原子性:事务是不可分割的,事务的操作要么全部事务,要么全部成功。

        一致性:事务保证数据库从一个状态转变为另一个状态。

        隔离性:事务是不能相互打扰的,一个事务的执行不能被其他事务打扰。

        持久性:事务一旦提交,对数据库的改变是永久的,之后的操作都不会对数据库有影响。

三、事务管理方式
        编程式事务管理:在业务层嵌入事务管理的代码来控制事务的提交和回滚。通过 TransactionTemplate或者TransactionManager手动管理事务,实际应用中很少使用,但是对于你理解 Spring 事务管理原理有帮助。

        声明式事务管理:将事务管理代码从业务代码中抽离出,以声明的方式去实现事务管理,这是最常见的做法。

配置事务的方式分为两种,一种是注解方式配置,一种是属性配置事务。

        1.注解方式配置

//注解方式配置
// 中心配置类中添加注解
@EnableTransactionManagement
 
// 在配置类中创建事务管理器Bean对象
    // 事务管理器配置
    @Bean
    public TransactionManager getTransactionManager(){
        // 使用SpringJDBC 或 MyBatis进行数据持久化使用的事务管理器
        DataSourceTransactionManager trans = new DataSourceTransactionManager();
        trans.setDataSource(this.getDataSource());
        return trans;
    }
 
// 就在需要处理事务的地方---可以是类,可以是方法,添加@Transactional
// 如果注解是加在类上,则表示该类的所有方法都有事务管理,入宫是加在方法上,表示该方法有事务管理
        2.属性配置事务

//属性配置事务
@Transactional 属性配置事务
ropagation// 事务的传播行为
isolation       // 事务的隔离级别
rollbackFor     // 事务回滚属性--遇到什么异常必须回滚
noRollbackFor   // 事务回滚属性--遇到什么异常不回滚
timeout         // 事务超时属性--单位-秒,
readOnly        // 事务只读形式--事务只能读取数据不能更新数据
事务的传播行为:当一个事务被另一个事务方法调用时,必须指定食物如何传播。

四、并发事务
        并发事务是程序中出现多个事务同时运行的情况。

        并发事务导致一些问题:脏读,不可重复读,幻读。

        脏读:当一个事务正访问数据时,对数据进行了修改,但是还没有提交到数据库,这时另一个事务也访问了这个数据,这就是脏读。

        不可重复读:指在一个事务内多次访问同一个数据。

        幻读:当事务A对一个表的所有数据进行了修改,此时事务B在表中插入了一条新数据,事务A去查看时就会发现事务B插入的数据,就好像发生了幻觉。

为了解决事务并发出现的问题,从而出现了事务隔离级别。

五、Spring事务不生效的八大原因
        1.数据库引擎不支持

        2.异常类型不支持

        3.没有被spring管理

        4.自身调用问题

        5.方法不是public

        6.数据源没有配置事务管理器

        7.事务被吃了

        8.设置了不支持事务
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值