Spring JDBC事件管理[Java编程]
本文“Spring JDBC事件管理[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
JDBC事件管理
Spring供应编程式的事件管理(Programmatic transaction manage- ment)与声明式的事件管理(Declarative transaction management),为差别的事件实现供应了一致的编程模子,这节以JDBC事件为例,介绍Spring的事件管理.
5.3.1 Spring对事件的支持
事件是一组原子(Atomic)操作的工作单元,以数据库存取的实例来说,就是一组SQL指令,这一组SQL指令必须全部履行成功,若因为某个缘由未全部履行成功(比方此中一行SQL有错误),则先前全部履行过的SQL指令城市被撤消.
举个简单的例子,一个客户从A银行转账至B银行,要作的行动为从A银行的账户扣款、在B银行的账户加上转账的金额,两个行动必须成功,假若有一个行动失利,则此次转账失利.
事件还必须保持所参与资源的一致性(Consistent),比方在银行账户的例子中,两个账户的转账金额,B账户取款的金额不能大于A账户的存款金额.每个事件彼此之间必须是断绝的(Isolated),比方在A账户中大概有两笔事件,同时举行存款与提款的行动,两个事件基本上不需意识到彼此的存在.事件还必须是可持续的(Durable),在某一笔事件之后,这笔事件必须是被记录下来的.
在这里将介绍JDBC若何利用事件管理.首先来看看事件的原子性实现,在JDBC中,可以操作Connection的setAutoCommit() 办法,给定false参数,在下达一连串的SQL语句后,自行履行Connection的commit()来送出变更,假如中间发生错误,则履行 rollback() 来撤消全部的履行,比方:
try { ..... connection.setAutoCommit(false); ..... // 一连串SQL操作 connection.commit(); } catch(SQLException) { // 发生错误,撤消全部变更 connection.rollback(); } |
在Spring中对JDBC的事件管理加以封装,Spring事件管理的抽象关键在于org.springframework.transaction.PlatformTransactionManager接口的实现:
public interface PlatformTransactionManager { TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; void commit(TransactionStatus status) throws TransactionException; void rollback(TransactionStatus status) throws TransactionException; } |
PlatformTransactionManager 接口有很多具体的事件实现类,比方DataSourceTransactionManager、 HibernateTransactionManager、JdoTransaction- Manager、JtaTransactionManager等,通过依靠于PlatformTransactionManager接口及各种的技术实现,Spring在事件管理上可以让开辟人员利用一致的编程模子,即便所利用的是差别的事件管理技术.
TransactionException是Unchecked Exception.事件的失利普通都是致命的错误,Spring不逼迫您一定要处理,而是让您自行挑选能否要捕捉非常.
getTransaction() 办法按照一个TransactionDefinition对象往复传一个TransactionStatus对象,TransactionDefinition接口的实例定义了事件的断绝程度(Isolation level)、传达行为(Propagation behavior)、超时(Timeout)、只读(Read-only)等,TransactionStatus代表着一个新的事件发动或已经存在的事件,您可以通过它来掌握事件的履行或调查的状况:
public interface TransactionStatus { boolean isNewTransaction(); void setRollbackOnly(); boolean isRollbackOnly(); } |
以上是“Spring JDBC事件管理[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |