- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Spring事务详解》.pdf
370 第 19 章 Spring 事务王国的架构
第 19 章
Spring事务王国的架构
本章内容
统一中原的过程
和平年代
Spring的事务框架将开发过程中事务管理相关的关注点进行适当的分离,并对这些关注点进行合
理的抽象,最终打造了一套使用方便,却功能强大的事务管理“利器”。通过Spring的事务框架,我
们可以按照统一的编程模型来进行事务编程,却不用关心所使用的数据访问技术以及具体要访问什么
类型的事务资源。并且,Spring的事务框架与Spring提供的数据访问支持可以紧密结合,更是让我们在
事务管理与数据访问之间游刃有余。而最主要的是,结合Spring的AOP框架,Spring的事务框架为我们
带来了原来只有CMT才有的声明式事务管理的特殊待遇,却无需绑定到任何的应用服务器上。
其他溢美之词咱就先放一边,还是赶快进入正题吧!
Spring的事务框架设计理念的基本原则是:让事务管理的关注点与数据访问关注点相分离。
当在业务层使用事务的抽象API进行事务界定的时候,不需要关心事务将要加诸于上的事务资
源是什么,对不同的事务资源的管理将由相应的框架实现类来操心。
当在数据访问层对可能参与事务的数据资源进行访问的时候,只需要使用相应的数据访问API
进行数据访问,不需要关心当前的事务资源如何参与事务或者是否需要参与事务。这同样将
由事务框架类来打理。
在以上两个关注点被清晰地分离出来之后,对于我们开发人员来说,唯一需要关心的,就是通过
抽象后的事务管理API对当前事务进行界定而已,如代码清单19-1所示。
代码清单19-1 使用事务管理抽象API进行事务界定的代码示例
public class FooService
{
private PlatformTransactionManager transactionManager;
public void serviceMethod()
{
TransactionDefinition definition = ...;
TransactionStatus txStatus = getTransactionManager().getTransaction(definition);
try
{
// dao1.doDataAccess();
// dao2.doDataAccess();
// ...
}
catch(DataAccessException e)
{
19.1 统一中原的过程 371
getTransactionManager().rollback(txStatus);
throw e; 18
}
catch(OtherNecessaryException e)
{
getTransactionManager().rollback(txStatus); 19
throw e;
}
getTransactionManager().commit(txStatus); 20
}
public PlatformTransactionManager getTransactionManager() {
return transactionManager; 21
文档评论(0)