spring事务声明:"声明式事务"和"编程式事务"介绍
2017-09-11 20:02
267 查看
编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate模板类或者直接使用底层的PlatformTransactionManager接口。对于编程式事务管理,spring推荐使用TransactionTemplate。
声明式事务:管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。
显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。
扩展:
Spring对编程式事务的支持Spring中的事务分为物理事务和逻辑事务;
使用工具类获取连接(会话)和释放连接(会话),如使用org.springframework.jdbc.datasource包中的DataSourceUtils 类来获取和释放具有逻辑事务功能的连接。当然对集成第三方ORM框架也提供了类似的工具类,如对Hibernate提供了SessionFactoryUtils工具类,JPA的EntityManagerFactoryUtils等,
高级别解决方案:
使用Spring提供的模板类,如JdbcTemplate、HibernateTemplate和JpaTemplate模板类等,而这些模板类内部其实是使用了低级别解决方案中的工具类来管理连接或会话
Spring提供两种编程式事务支持:直接使用PlatformTransactionManager实现和使用TransactionTemplate模板类,用于支持逻辑事务管理。如果采用编程式事务推荐使用TransactionTemplate模板类和高级别解决方案
转载自:http://blog.csdn.net/u013083576/article/details/51754567
相关文章推荐
- Spring的4种事务管理(1种编程式事务+三种声明事务)
- 事务声明声明式事务和编程式事务介绍
- Spring声明事务管理与配置介绍
- 事务声明声明式事务和编程式事务介绍
- Spring的四种事务管理(一种编程式事务+三种声明事务)<学习随笔>
- Spring的4种事务管理(1种编程式事务+三种声明事务)
- spring配置必须声明元素类型 "context:component-scan"。
- 事务声明声明式事务和编程式事务介绍
- Spring的四种事务管理(一种编程式事务+三种声明事务)<学习随笔>
- Spring的四种事务管理(一种编程式事务+三种声明事务)<学习随笔>
- Spring的4种事务管理(1种编程式事务+三种声明事务)
- Spring的编程式事务和声明式事务
- Spring 声明事务中transactionAttributes属性 + - Exception 实现逻辑
- [MID介绍] 解密仅卖1000元的"电脑"
- Springboot 利用Aspect 解决NULL 返还为""
- 如何解决“引用了实体 "nbsp", 但未声明它”
- spring声明事务、annotation事务同时使用注意
- 全面分析spring编程式事务与声明式事务管理
- spring 的"零配置"支持
- linux下编译出现 "警告:隐式声明与内建函数'exit'不兼容" 的解决方法