1.  事务作用:在数据层保障一系列的数据库操作同时成功同时失败

2.  Spring事务作用:在数据层或业务层保障一系列的数据库操作同时成功同时失败

  ¤  Spring提供一个接口和实现类

    public interface PlatformTransactionManager

    {

      void commit(TransactionStatus status) throws TransactionException;

      void rollback(TransactionStatus status) throws TransactionException;

    }

    public class DataSourceTransactionManager

    {

    }

  ¤  使用Spring事务的三个步骤

    ♦  在业务层接口方法上添加事务注解  注:此注解可在实现类方法、接口或类上,开在接口或类上,表示接口或类所有方法都添加事务

      public interface AccountService

      {

        @Transcactioncal

        public void transfer(String out, String in, Double money);

      }

    ♦  添加事务管理器Bean注解

      @Bean

      public PlatformTransactionManager transactionManager(DataSource dataSource)

      {

        DataSourceTransactionManager ptm = new DataSourceTransactionManager();

        ptm.setDataSource(dataSource);

        return ptm;

      }

    ♦  在Spring配置类里开启事务管理的注解

      @EnableTransactionManagement

      public class SpringConfig

      {

      }

  ¤  Spring事务角色

    ♦  事务管理员:发起事务方,在Spring中通常指代业务开启事务的方法。

    ♦  事务协调员:加入事务方,在Spring中通常指代数据层方法,也可是业务层方法。

  ¤  @Transcactioncal事务注解相关设置

    ♦  readOnly  设置为是否只读事务  例:@Transcactioncal(readOnly = true)代表只读

    ♦  timeout  设置事务超时时间  例:@Transcactioncal(timeout = -1)代表永不超时

    ♦  rollbackFor  设置事务回滚异常(class)  例:@Transcactioncal(rollbackFor = {xxn异常.class})

    ♦  rollbackForClassName  设置事务回滚异常(String)  例:@Transcactioncal(rollbackForClassName = {className})

    ♦  noRollbackFor  设置事务不回滚异常(class)  例:@Transcactioncal(noRollbackFor = {xxn异常.class})

    ♦  noRollbackForClassName  设置事务不回滚异常(String)  例:@Transcactioncal(noRollbackForClassName = {className})

    ♦  progagation  设置事务传播行为  例:@Transcactioncal(progagation = Progagation.REQUIRES_NEW)

      •  REQUIRES  默认  管理员开启事务T/无事务  事务协调员加入T/新建事务T2

      •  REQUIRES_NEW  管理员开启事务T/无事务  事务协调员新建事务T2/新建事务T2

      •  SUPPORTS  管理员开启事务T/无事务  事务协调员加入T/无事务

      •  NOT_SUPPORTS  管理员开启事务T/无事务  事务协调员无事务/无事务

      •  MANDATORY  管理员开启事务T/无事务  事务协调员加入T/ERROR

      •  NERVER  管理员开启事务T/无事务  事务协调员ERROR/无事务

      •  NESTED  设置savePoint,一旦事务回滚,将回滚到savePoint处,交由客户响应提交或回滚

♦