Spring事务管理

来源 :大众商务·下半月 | 被引量 : 0次 | 上传用户:wbgbg
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】Spring是一个非常活跃的开源框架;它是一个机遇IOC和AOP来构架多层J2EE系统的框架,Spring不强迫你必须在每一层中必须使用Spring,因为它在模块化方面做的很好,它允许你根据自己的需要选择使用它的某一模块;他实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用ICO可以很方便的实现对BEAN类的装配,提供了简洁的AOP并据此实现Transcation Managment等等。
  【关键词】Spring;事务处理
  中图分类号:TP391 文献标识码:A 文章编号:1009-8283(2009)03-0217-01
  
  1 Spring 框架
  Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
  
  2 Spring特性
  IoCoC就是Inversion of Control。意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。是面向对象领域新兴的编程思想;同时这也是Spring的精髓所在。
  Spring IoC,借助于依赖注入设计模式,使得开发者不用理会对象自身的生命周期极其关系,而且能够改善开发者对模式的使用。对于一个对象的管理不是什么困难,难就难在对整个对象群的管理。依赖注入可以让容器管理对象,即“Don’t call me,I will call you”。这样对象本身的生命周期以及对象之间的关系就不再让开发者费神了。
  Spring AOP,借助于Spring实现拦截器,开发者能够实现以声名方式使用企业级服务,比如安全性服务、事务服务。AOP 合理的补充了OOP,借助于Spring AOP,开发者能够高效的使用J2EE服务。
  Spring服务抽象,借助于各种J2EE API抽象,使得开发者能够一致地使用J2EE 技术,而不管具体是使用什么J2EE API,借助于Spring服务抽象,使代码大大减少,满足“更少代码,更少BUG”的软件设计原则。
  Spring IoC+Spring AOP+Spring服务抽象,一起形成Spring,这样一个有机体,使构建轻量级J2EE成为可能。
  
  3 事务处理
  Spring提供的两种事务管理策略可以让我们很方便的实现事务的管理,相对于编程序的事务管理,声明式的事务更具优势,Spring使用AOP的机制自动拦截相关的方法调用,将大量的事务管理逻辑从应用代码中分离出来,开发者无需手动干预事务的开始,提交,关闭操作,一个完整的事务管理逻辑一经定义,几乎一劳永逸,其效果就如同事务管理不存在一样。
  3.1 传统使用JDBC的事务管理
  以往使用JDBC进行数据操作,使用DataSource,从数据源中得到Connection,我们知道数据源是线程安全的,而连接不是线程安全的,所以对每个请求都是从数据源中重新取出一个连接。一般的数据源由容器进行管理,包括连接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等这些J2EE商业容器都提供了这个功能。
  按照以往的思路来写代码,代码量比较长,而且容易疏忽,忘掉一些try/catch,引发一些异常无法catch,虽然有时候我们会写DBTool类,来关闭这些资源,并且保证在关闭这些资源时,不向外抛异常,但是这样做会导致额外的麻烦。
  3.2 编程序事务管理
  编写程序的事务管理可以清楚的定义事务的边界,可以实现细粒度的事务控制,比如你可以通过程序代码来控制你的事务何时开始,何时结束等,与后面介绍的声明式事务管理相比,它可以实现细粒度的事务控制。
  Spring提供了几个关于事务处理的类:TransactionDefinition //事务属性定义
  TranscationStatus //代表了当前的事务,可以提交,回滚。
  PlatformTransactionManager这个是spring提供的用于管理事务的基础接口,其下有一个实现的抽象类AbstractPlatformTransactionManager,我们使用的事务管理类例如DataSourceTransactionManager等都是这个类的子类。
  我们使用编程式的事务管理流程可能如下:
  (1) 声明数据源。
  (2) 声明一个事务管理类,例如:DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等
  (3) 在我们的代码中加入事务处理代码:
  TransactionDefinition td = new TransactionDefinition();
  TransactionStatus ts = transactionManager.getTransaction(td);
  try{
  //do sth
  transactionManager.commit(ts);
  }catch(Exception e){transactionManager.rollback(ts);}
  使用Spring提供的事务模板TransactionTemplate:
  void add()
  {
  transactionTemplate.execute( new TransactionCallback(){
  pulic Object doInTransaction(TransactionStatus ts)
  { //do sth}
  }
  }
  TransactionTemplate也是为我们省去了部分事务提交、回滚代码;定义事务模板时,需注入事务管理对象。
  3.3 声明式事务管理
  如果你并不需要细粒度的事务控制,你可以使用声明式事务,在Spring中,你只需要在Spring配置文件中做一些配置,即课将操作纳入到事务管理中,解除了和代码的耦合,这是对应用代码影响最小的选择,从这一点再次验证了Spring关于的概念。当你不需要事务管理的时候,可以直接从Spring配置文件中移除该设置。
  Spring的声明式事务管理是通过Spring的AOP机制来实现的,对你而言,这一层是隐藏的,使用事务管理并不侵入你的开发组件,也就是说,在你的应用代码中并不需要出现任何关于事务管理方面的代码。Spring在运行过程中,会读取节点中的配置信息,并执行事务的管理操作。Spring声明式事务处理也主要使用了IoC,AOP思想,提供了TransactionInterceptor拦截器和常用的代理类TransactionProxyFactoryBean,可以直接对组件进行事务代理。
  
  4 结束语
  Spring可以简单的把普通的java class纳入事务管理,声明性的事务操作起来也很容易。有了Spring之后,声明性事务不再是EJB独有,我们不必为了获得声明性事务的功能而去忍受EJB带来的种种不便。Spring还提供了惟一的事务管理抽象,它能够在各种底层事务管理技术(如JTA或者JDBC)之上提供一个一致的编程模型。
其他文献
【摘 要】源自于流通领域的业态的概念引入到旅游领域后发挥了极大的推动作用,本文在分析了旅游业态的本身特点的基础之上,进而结合湖南洪江古商城为例,提出了进行系统化业态管理的洪江景区殛待推进的几个路径。  【关键词】旅游业态;洪江;会馆文化  中图分类号:F590.6 文献标识码:A 文章编号:1009-8283(2009)03-0051-01    近年来,旅游规划和管理中频频引进了业态一词,使得业
期刊
【摘 要】企业推进业务流程优化时面临着不同实施方法的选择。根据企业的环境变量,采取合适的流程优化实施方法将可以避免给企业运作带来更大的风险。基于PDCA循环的实施方法是一种自底向上的循序渐进式的流程优化方法,该方法实现对子流程的阶段性的改进,进而带来整体流程的的优化,最终实现企业战略目标。  【关键词】业务流程优化;PDCA循环;持续改进  中图分类号:F830 文献标识码:A 文章编号:1009
期刊
【摘 要】高等教育正面临着激烈的国际国内竞争,我国高校借鉴CIS塑造品牌形象,提升社会声誉是时代和社会发展的客观要求,也是我国高校自身发展的需要。本文通过借鉴企业CIS内涵,对我国高校打造自身品牌、导入CIS战略的内容及原则进行了研究。  【关键词】 高校;CIS;品牌  中图分类号:G643.07 文献标识码:A 文章编号:1009-8283(2009)03-0134-02    我国高等教育的
期刊
【摘 要】在开发新型农村合作医疗软件过程中,一个需要解决的问题是如何实现医院管理信息系统(HIS)和新农合软件的数据接口。本文介绍了一种基于PowerBuilder编程语言的接口方法,该方法能够自动或者手动把指定的数据从HIS数据库复制到新农合数据库,从而实现数据共享。  【关键词】HIS;新农合;PowerBuilder  中图分类号:TP18 文献标识码:A 文章编号:1009-8283(20
期刊
【摘 要】Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。  【关键词】搜索引擎;Lucene;全文搜索  中图分类号:TP18 文献标识码:A 文章编号:1009-8283(2009)03-0
期刊
【摘 要】介绍了基于AVR单片机ATMEGA8的空气消毒机系统的功能及设计原理,并给出了具体的设计方案,包括系统的硬件电路设计和软件设计。该消毒机不仅具有臭氧、紫外线和高效滤器组成的三重杀菌消毒功能,还能实时检测并显示室内空气质量情况。此仪器经投入使用后,具有运行稳定可靠,适应性好等优点。  【关键词】AVR单片机;臭氧;紫外线;消毒  中图分类号:TP18 文献标识码:A 文章编号:1009-8
期刊
【摘 要】随着社会持续发展和技术的飞速发展,航天遥感、全球定位系统以及地理息系统等空间信息科学技术已经成为我们研究自然、社会、经济的重要工具和段。基于GIS的地理数据分析也得到了广泛的应用,本文简略的介绍了GIS技术的发展。  【关键词】GIS技术;GIS技术的发展;GIS技术的研究  中图分类号:TP311.65 文献标识码:A 文章编号:1009-8283(2009)03-0096-01   
期刊
【摘 要】本文介绍了基于AvR单片机的多外围设备控制系统的设计。分析了其中的多个步进电机的驱动电路以及一些其它外围电路的设计。  【关键词】AVR;控制系统;pWM传感器智能座便器;AvR单片机步进电机  中图分类号:TP18 文献标识码:A 文章编号:1009-8283(2009)03-0110-01    1 系统测试及存在的问题  系统的测试分为独立测试和联合测试。独立测试是为了确认该电路及
期刊
【摘 要】VPN技术应用日益广泛,IPSec已成为实现VPN的主要方式。文章对IPSec相关协议进行分析的基础上,针对IPSec协议族在安全策略方面的不足,提出在远程访问模型中使用集中试策略管理并对该管理系统进行了研究。  【关键词】IPSec VPN;安全策略数据库;安全关联数据库;安全策略  中图分类号:TB18 文献标识码:A 文章编号:1009-8283(2009)03-0103-01  
期刊
【摘 要】信息时代促生的新媒体,每一则新闻都会产生过去的几次方的爆炸性传播效果,这种情况下新闻理应对真实性要求更高,但是鉴于信息时代的种种特点,新闻真实性反而更加难以监督。这时不但需要提高从业者道德,也需要加强法制建设。值得重视的是,信息时代的新闻传播固然为假新闻的滋生提供了温床,但也为揭发假新闻提供了便利。  【关键词】信息时代;新媒体;假新闻;法制  中图分类号:TP18 文献标识码:A 文章
期刊