zoukankan      html  css  js  c++  java
  • Spring事务管理TransactionManager

    事务就是对一系列的数据库操作进行统一的提交或回滚操作,比如说做一个转账功能,要更改帐户两边的数据,这时候就必须要用事务才能算是严谨的做法。要么成功,要么失败,保持数据一致性。如果中间有一个操作出现异常,那么回滚之前的所有操作。
    这样有什么好处呢。
    这样可以防止在一些意外(例如说突然断电)的情况下出现乱数据,防止数据库数据出现问题。这边加了钱,那边却还是一样的数,这就完了。要是开放一个网上交易的平台,这样就会出大问题的!
    还有其他的一些操作,像是要添加多条数据,如果程序要求必须全部正确才能插入的话,事务又起大作用了,等等。。。开发中为了避免这种情况一般都会进行事务管理。

    在JDBC中是通过Connection对象进行事务管理的,默认是自动提交事务,可以手工将自动提交关闭,通过commit方法进行提交,rollback方法进行回滚,如果不提交,则数据不会真正的插入到数据库中。

    Hibernate中是通过Transaction进行事务管理,处理方法与JDBC中类似。

    Spring中也有自己的事务管理机制,使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。

    系统设计方面要求手动控制事务

    1、
    applicationContext.xml:

    <bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
    p:dataSource-ref="dataSource"/>

    2、
    在需要加事务的方法上加上

    DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) ctx
    .getBean("transactionManager");
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务
    TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态
    try {
    //逻辑代码
    transactionManager.commit(status);
    } catch (Exception e) {
    transactionManager.rollback(status);
    }

    引自:http://cailangwei.blog.163.com/blog/static/1314585792014895755400/

            https://zhidao.baidu.com/question/197227102.html

  • 相关阅读:
    28
    27
    26
    25
    24
    23
    17
    16
    15
    14
  • 原文地址:https://www.cnblogs.com/WAbby/p/6118570.html
Copyright © 2011-2022 走看看