Spring-声明式事务
通过注解的方式告诉框架,怎么做由框架做
编程式: 通过代码的方式
声明式事务优点:
1.代码量小
2.缺点:封装的太多
添加配置
自动配置数据源
以后操作数据库:
1.导入包
2.配置数据库连接信息
3.可以直接使用DataSource
准备一个Bean包
创建Dao
事务:
1.开启事务管理
@EnableTransactionManagement
事务细节
事务管理器的作用:控制事务的获取,提交,回滚
底层默认使用哪个事务管理器?默认使用的是JdbcTransactionManager
原理:
1.事务管理器TransactionManager:控制提交和回滚
2事务拦截器(是一个切面aop):TransactionInterceptor,控制何时提交和回滚
2.propagation:传播行为 !!!!!
3.isolation:隔离级别 !!!!
4.timeout(同timeoutStirng):超时时间,控制事务的超时时间,单位是s
一旦超过时间,事务就会回滚
超时时间的计算,是从方法的进入到最后一次Dao操作的时间(最后一次操作数据库的结束时间)
5.readonly 只读优化
如果readonly是true,则打开优化。
6.rollbackFor:指明哪些异常需要回滚
并不是所有异常都会触发事务回滚
异常有两类:
运行时异常(unchecked exception)非受检异常
编译时异常(checked exception)受检异常
Spring回滚的默认机制:
运行时异常回滚
编译时异常不回滚
****rollbackFor可以指定哪些异常需要回滚
最终版:
6.noRollbackFor:指明哪些异常不需要回滚