Spring 事务原理

事务的基本原理

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事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供...
    芭蕾武阅读 1,706评论 3 12
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,268评论 19 139
  • 一、事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事...
    阿灯_supwinr阅读 14,791评论 2 28
  • 深入理解 Spring 事务原理参考:https://mp.weixin.qq.com/s/HHLGfRuD_Yn...
    it_zzy阅读 774评论 0 8
  • 仪式感与生活,我一直以为这是两个不能结合的词语,知道我看见有人跟我说了一句,你的生活缺少一种仪式感。 不要说是仪式...
    叶小涛阅读 234评论 0 0