实例详解spring jdbc事务管理

实例详解spring jdbc事务管理

ID:5662967

大小:65.50 KB

页数:9页

时间:2017-12-21

实例详解spring jdbc事务管理_第1页
实例详解spring jdbc事务管理_第2页
实例详解spring jdbc事务管理_第3页
实例详解spring jdbc事务管理_第4页
实例详解spring jdbc事务管理_第5页
资源描述:

《实例详解spring jdbc事务管理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、·实例详解SpringJDBC事务管理·http://developer.51cto.com 2009-06-0817:56 佚名 中国IT实验 我要评论()本文以JDBC事务为例,介绍Spring的事务管理。Spring提供编程式的事务管理与声明式的事务管理,提供提供了一致的编程模型。JDBC事务管理Spring提供编程式的事务管理(Programmatictransactionmanage-ment)与声明式的事务管理(Declarativetransactionmanagement),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍S

2、pring的事务管理。Spring对事务的支持事务是一组原子(Atomic)操作的工作单元,以数据库存取的实例来说,就是一组SQL指令,这一组SQL指令必须全部执行成功,若因为某个原因未全部执行成功(例如其中一行SQL有错误),则先前所有执行过的SQL指令都会被撤消。举个简单的例子,一个客户从A银行转账至B银行,要作的动作为从A银行的账户扣款、在B银行的账户加上转账的金额,两个动作必须成功,如果有一个动作失败,则此次转账失败。事务还必须保持所参与资源的一致性(Consistent),例如在银行账户的例子中,两个账户的转账金额,B账户取款的金额不能大于A账户的

3、存款金额。每个事务彼此之间必须是隔离的(Isolated),例如在A账户中可能有两笔事务,同时进行存款与提款的动作,两个事务基本上不需意识到彼此的存在。事务还必须是可持续的(Durable),在某一笔事务之后,这笔事务必须是被记录下来的。在这里将介绍JDBC如何使用事务管理。首先来看看事务的原子性实现,在JDBC中,可以操作Connection的setAutoCommit()方法,给定false参数,在下达一连串的SQL语句后,自行执行Connection的commit()来送出变更,如果中间发生错误,则执行rollback()来撤消所有的执行,例如:try

4、{.....connection.setAutoCommit(false);.....//一连串SQL操作connection.commit();}catch(SQLException){//发生错误,撤消所有变更connection.rollback();}在Spring中对JDBC的事务管理加以封装,Spring事务管理的抽象关键在于org.springframework.transaction.PlatformTransactionManager接口的实现:publicinterfacePlatformTransactionManager{Transa

5、ctionStatusgetTransaction(TransactionDefinitiondefinition)throwsTransactionException;voidcommit(TransactionStatusstatus)throwsTransactionException;voidrollback(TransactionStatusstatus)throwsTransactionException;}PlatformTransactionManager接口有许多具体的事务实现类,例如DataSourceTransactionManager

6、、HibernateTransactionManager、JdoTransaction-Manager、JtaTransactionManager等,通过依赖于PlatformTransactionManager接口及各种的技术实现,Spring在事务管理上可以让开发人员使用一致的编程模型,即使所使用的是不同的事务管理技术。TransactionException是UncheckedException.事务的失败通常都是致命的错误,Spring不强迫您一定要处理,而是让您自行选择是否要捕捉异常。getTransaction()方法根据一个Transactio

7、nDefinition对象来回传一个TransactionStatus对象,TransactionDefinition接口的实例定义了事务的隔离程度(Isolationlevel)、传播行为(Propagationbehavior)、超时(Timeout)、只读(Read-only)等,TransactionStatus代表着一个新的事务发起或已经存在的事务,您可以通过它来控制事务的执行或调查的状态:publicinterfaceTransactionStatus{booleanisNewTransaction();voidsetRollbackOnly()

8、;booleanisRollbackOnly();}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。