spring声明式事务总结一

来源:互联网 发布:贵阳市大数据展示中心 编辑:程序博客网 时间:2024/06/06 02:30
<!-- 配置spring事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="musesfrontdb" /></bean>!-- 启用annotation定义事务 --><tx:annotation-driven transaction-manager="transactionManager" /> 

以上两部分必须首先引入spring的配置文件,并且引入tx命名空间,这样才能使用spring的声明式事务@Transactional

事务的四个特性:原子性、隔离性、一致性、持久性

事务最重要的两个特性,是事务的传播级别和数据隔离级别。传播级别定义的是事务的控制范围,事务隔离级别定义的是事务在数据库读写方面的控制范围。

事务的传播行为

使用propagation指定事务的传播行为,如果买一本书减库存并扣余额是一个事务,买两本书,也就是循环执行两个事务,默认是只要有其中一个事务抛异常就会全部回滚。事务的传播行为有两种:

1、propagation=Propagation.REQUIRED是默认的情况,使用调用方法的事务,而不是新开事务;

2、propagation=REQUIRED_NEW是新开事务

事务的隔离级别

脏读:写不加锁,也就是一个事务读取到了另一个事务回滚前的数据,并发性事务会引起脏读,所以要引入【事务的隔离级别】概念。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed,它能够避免脏读,而且具有较好的并发性能。最常用的取值isolation=Isolation.READ_COMMITITED

事务的回滚属性

默认情况下,spring声明式事务会对所有的运行时异常进行回滚,noRollbackFor={UserAccountException.class},通常情况下取默认值不去设置

spring整合mybatis整合什么?

1、由springIoc容器去生成mybatis的sessionFactory
2、让mybatis使用spring的声明式事务

原创粉丝点击