事务管理对于企业应用来说是至关重要的,当出现异常情况时,它也可以保证数据的一致性。

Spring事务有两种管理方式:编程式事务和声明式事务

  • 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
  • 声明式事务是建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,它的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。

声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。

最新文章

  1. android xml中的xliff属性
  2. Django HTML 显示文章摘要
  3. git抽疯了。。。
  4. iOS----------使用 Xcode6或Xcode7配置.pch文件
  5. hdu 2393:Higher Math(计算几何,水题)
  6. paramiko堡垒机、线程及锁
  7. 基于Elasticsearch开发时的注意事项备忘
  8. 关于Apache Struts 2 S2-032高危漏洞的一些确认
  9. 温故知新——json
  10. Android LayoutInflater.inflate使用上的问题解惑
  11. 关于STM32 RTC的使用
  12. SQLite for xamarin
  13. kibaba 选择字段
  14. Java开发者工具
  15. NAND Flash中常用的纠错方式(ECC算法)
  16. 错误 4 自定义工具错误: 无法生成服务引用“DepartMentService”的代码。请检查其他错
  17. 解决方案命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
  18. VMvare 虚拟网卡vmnet1 and vmnet8
  19. java多线程管理 concurrent包用法详解
  20. LOJ #559. 「LibreOJ Round #9」ZQC 的迷宫

热门文章

  1. Codeforces Round #599 (Div. 1) C. Sum Balance 图论 dp
  2. EggJs快速入门
  3. Linux war包部署jenkins
  4. MongoDB for OPS 03:分片 shard 集群
  5. Z从壹开始前后端分离【 .NET Core2.2/3.0 +Vue2.0 】框架之九 || 依赖注入IoC学习 + AOP界面编程初探
  6. 执行插件的替代方式:用JS调用操作
  7. [b0029] python 归纳 (十四)_队列Queue实现生产者消费者
  8. SparkStreaming 整合kafka Demo
  9. 记录TortoiseGit=>https请求/ssh请求配置
  10. MySQL数据篇(五)--SQL对数据进行按月统计,或对数据进行按星期统计