当前位置:七道奇文章资讯编程技术Java编程
日期:2011-01-26 02:54:00  来源:本站整理

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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在Ubuntu管理iPhone/iPod SpringBoard图标
  • Visual C++ sprintf()函数用法
  • 发扬EJB、Spring思惟将组件化举行到底
  • spring在MVC层办理JPA的缓迟加载问题
  • 用spring简单实现发送邮件
  • 用Spring framework实现按时器功效
  • 关于Struts和Spring两种MVC框架的比较
  • Spring自动装配的学习
  • Spring事件配置的五种办法
  • Spring编程入门十大问题解答
  • Hibernate+Spring+Struts扩大Struts
  • J2EE新手入门之"Spring"名词注释
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .