1.事务:
把多个操作绑定在一起,要么全部成功,要么全部失败
2.声明式事务:
在程序中,指定开启或回滚事务的规则,程序根据设定好的规则,自动开启或回滚事务
ref=dataSource:这个dataSource是配置我们spring和MyBatis整合配置数据源的、
详情请看文档的第三点:spring和mybatis整合
我们的事务属性这里就简约的说一下事务传播机制:
SUPPORTS:
表示如果存在一个事务,则支持当前事务,如果没有,则按非事务方式执行
REQUIRED:
表示如果存在一个事务,则支持当前事务,如果没有,则自己开启一个新的事务
补充:
REQuIRES_NEW:
表示总是开启一个新事务,如果一个事务已经存在,则将这个存在的挂起,开启新的事务
还有等等 比如NESTED....
而这个标签的name属性里面填写的是,你需要做的增删改查功能是什么需要开启事务传播机制
因为我们事务是在spring增强的功能上实现的,所以我们还需要定义切面
<!-- 定义切面--> <aop:config> <!-- 定义切面--> <aop:pointcut id="serviceMethod" expression="execution(* com.t239.service..*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" /> </aop:config>我们这就完成了声明式事务,我们还有一种方法就是使用注解形式
我们做注解事务就更加简单一点:
将定义的事务管理器添加进去
<!-- 启动注解事务 --> <tx:annotation-driven transaction-manager="transactionManager" />我们通过注解进行事务回滚,以及提交,注解如下:
@Transactional将这个注解添加到类前面,这个类所有的方法有有事务回滚提交功能
将这个添加到方法前,就只能对方法使用
Transactional的属性不止一种,有很多比如:
@Transactional(propagation= Propagation.SUPPORTS) @Transactional(propagation=Propagation.REQUIRED)等等等,这里就不一一解释说明了
