Spring 事务原理

作者: FX_SKY | 来源:发表于2017-03-03 12:01 被阅读44次

    事务的基本原理

    Spring 事务 本质上是对JDBC事务的封装。
    对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:

    Connection con = DriverManager.getConnection()  //1.获取连接 
    try {
        con.setAutoCommit(false);   //2.开启事务
        
        //3. do your business
        
        con.commit() //4.提交事务
    } catch (Exception e){
        con.rollback(); //5.回滚
    }finally{
        conn.close(); //6.关闭连接 
    }
    

    这种方式的事务管理使事务范围可以在代码中很清晰地表达出来,但它有以下缺点:

    • 容易出现重复代码和错误
    • 任何错误可能产生较大的影响
    • 错误难以调试和复现
    • 降低了代码库的可读性

    使用Spring的事务管理功能后,我们可以不再写步骤 2、4 和5的代码,而是由Spirng 自动完成。

    标准配置

    要 开 启 Spring 的 事 务 处 理 , 在 Spring 的 XML 配 置 文 件 中 简 单 创 建 一 个 DataSourceTransactionManager 对象:

    <!-- 配置事务管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="masterDataSource" />
        </bean>
    
        <!-- 启用事物注解 -->
        <tx:annotation-driven transaction-manager="transactionManager" />
    

    然后,就可以在代码中使用 @Transactional注解了,上面的代码就简化为:

    @Transactional
     public void businessLogic() {
           //do your business
    }
    

    通过使用@Transactional,还可以设置事务传播、隔离级别、如何回滚等。

    相关文章

      网友评论

        本文标题:Spring 事务原理

        本文链接:https://www.haomeiwen.com/subject/bcwlgttx.html