spring 的@Transactional 注解详细用法spring 的@Transactional 注解详细用法 Spring Framework 对事务管理提供了一致的抽象,其特点如下: 为不同的事务 API 提供一致的编程模型,比如 JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API 和 JDO(Java Data Objects) 支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用 提供比其他事务 API 如 JTA 更简单的编程式事务管理 API 与 spring 数据访问抽象的完美集成 事务管理方式 spring 支持编程式事务管理和声明式事务管理两种方式
编程式事务管理使用 TransactionTemplate 或者直接使用底层的PlatformTransactionManager
对于编程式事务管理,spring 推举使用TransactionTemplate
声明式事务管理建立在 AOP 之上的
其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务
声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional 注解的方式),便可以将事务规则应用到业务逻辑中
显然声明式事务管理要优于编程式事务管理,这正是 spring 提倡的非侵入式的开发方式
声明式事务管理使业务代码不受污染,一个普通的 POJO 对象,只要加上注解就可以获得完全的事务支持
和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别