进行事务控制时 xml中配置
1.定义声明式事务
<bean id='"XXX" class=" xxxxx.DataSourceTransationManager" >
<property name="dataSource" ref="数据源">
</bean>
2.指定采用注解方式进行控制
<tx:annotation-driven trancaction-manager="XXX" />
3.通过@Trancation注解进行事务控制----此注解可定义在类上也可以定义在方法上,如果两者都存在,以方法上的为准。注解可加参数。也可配置事务的隔离级别。
事务的传播特性:(就是当一个事务方法调用另一个事务方法时,执行哪个事务)即事务方法之间相互调用时,事务的传播方式。
@Trancation(propagation.......)-------默认为 REQUIRED 就是当A事务访问B事务时,B事务要依附于A事务,此时B事务挂起(没用了),使用A事务。
propagation = REQUIRED 时,当前数据库操作必须添加事务。
propagation = supports 时,表示事务支持的,如果方法需要事务,则查询方法有事务;如果查询方法不需要事务,则查询不添加事务,多应用于一个方法处理多个业务逻辑时用到。------查询方法中会用到
事务的隔离级别:isolation=“READ_COMMITTED” 隔离级别越小,并发性越好,并发访问越大,数据安全性低;隔离级别越大,并发性越差,并发访问越小,数据安全性高。
回滚策略:rollback-for
Spring中有默认的事务策略:
1.如果是runtimeException 或error时,则自动回滚事务
2.如果是检查时异常,则不管