SSM框架学习-Spring事务

这篇具有很好参考价值的文章主要介绍了SSM框架学习-Spring事务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 数据库中事务与Spring中的事务

数据库事务和Spring中的事务是两个不同的概念,但Spring中的事务是建立在数据库事务之上的。

  1. 数据库事务是指一组数据库操作,要么全部成功执行,要么全部回滚(撤销)。这么做是为了保证数据库的一致性和完整性。在数据库操作过程中,如果其中任意一步操作失败,整个事务将会被回滚到最初状态。

  2. Spring中的事务是指基于Spring框架提供的事务管理机制实现的一种服务,它可以对一组操作进行批量操作,保证这些操作要么全部成功,要么全部失败。Spring中的事务可以和数据库事务结合使用,通过管理数据库事务的提交和回滚来保证数据的一致性。

  3. 在Spring中,可以使用@Transactional注解来标注希望进行事务管理的方法或类。同时,Spring还提供了多种事务管理方式,如声明式事务、编程式事务等,可以根据具体的业务需求进行选择。

  4. Spring在数据层或业务层保障一系列的数据库操作同成功同失败,

2. Spring事务案例1(与之前的SQL案例类似)

SSM框架学习-Spring事务

该案例表明出现异常时,业务不会提交会进行回滚

2.1 使用注解标注

标注希望得到事务管理的方法或类
一般在接口方法处标注,不在实现类降低耦合

    @Transactional
    public void transfer(String out,String in ,Double money) ;
2.2 配置事务管理器
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }
2.3 在Spring文件中标注事务管理方式

注解式事务驱动

//开启注解式事务驱动
@EnableTransactionManagement

3. 事务角色

SSM框架学习-Spring事务

原本是三个事务,现在整合成为一个事务

SSM框架学习-Spring事务

4. 事务相关配置

SSM框架学习-Spring事务

如果在事务中抛出 RuntimeException 及其子类的异常,Spring会自动将其捕获并触发事务回滚。
当然,对于非RuntimeException 及其子类异常,如果它们没有被显式地指定为回滚异常,那么默认情况下 Spring 将不会触发事务回滚。
所以,我们要设置事务回滚异常。

    //rollback:设置当前事务参与回滚的异常,默认非运行时异常不参与回滚
    @Transactional(rollbackFor = IOException.class)
    public void transfer(String out,String in ,Double money) throws IOException;

5. Spring事务案例2-事务传播行为

在上述基础之上,对案例进行相应的改进

SSM框架学习-Spring事务
SSM框架学习-Spring事务
SSM框架学习-Spring事务

但是日志事务要和转账事务分离,所以针对日志功能要开启新事务;
事务传播行为:事务协调员对事务管理员所携带事务的处理态度,究竟是加入事务还是不加入事务;
所以日志功能要设置新事务属性

    //propagation设置事务属性:传播行为设置为当前操作需要新事务
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    void log(String out, String in, Double money);

SSM框架学习-Spring事务文章来源地址https://www.toymoban.com/news/detail-451262.html

到了这里,关于SSM框架学习-Spring事务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(55)
  • Spring事务管理 | 数据库连接池流程原理分析

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 事务(Transaction),一般是指要做的或所做的事情。在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 。事务通常由 高级数据库 操纵语言或编程语言(如SQL,C++或Java)书写的 用户程序

    2024年02月02日
    浏览(49)
  • Java项目:基于ssm框架实现的电影评论系统(ssm+B/S架构+源码+数据库+毕业论文)

    本项目是一套ssm826基于ssm框架实现的电影评论系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse 确保可以运行! 该系统功能完善、界面

    2024年01月25日
    浏览(51)
  • Spring Boot中操作数据库的几种并发事务方式

    当有多个 并发 事务时,会发生丢失更新异常。来自一个或多个 事务 的更新可能会丢失,因为其他事务会用其结果覆盖它。 让我们通过一个例子来检验一下。考虑以下执行事务的方法。 public void withdraw(Long accountId, double amount) { Account account = accountRepository.findById(accountId).orEl

    2024年01月22日
    浏览(53)
  • Java项目:基于SSM框架实现同城蔬菜配送管理系统(SSM+B/S架构+源码+数据库+毕业论文)

    本项目是一套ssm825基于SSM框架实现同城蔬菜配送管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或idea 确保可以运行! 该系统功能

    2024年01月25日
    浏览(58)
  • idea利用spring框架整合thymeleaf展现数据库数据

    idea初步利用thymeleaf展现列表 上一篇文章简单展现自己写的列表; 这篇文章连接mysql数据库实现数据库数据展现 主要三个文件 controller指定html界面 mapper写数据库sql查询语句 pojo中的user写具体数据库中的表包含哪些字段(这部分最好的方式写出变量名字然后alt+insert自动生成g

    2024年02月05日
    浏览(59)
  • 【Spring Boot】数据库持久层框架MyBatis — MyBatis简介

    本节首先会介绍什么是ORM、什么是MyBatis、MyBatis的特点以及核心概念,最后介绍MyBatis是如何启动、如何加载配置文件的? ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。简单地说,ORM通过使用描述对象和数据库之

    2024年02月11日
    浏览(46)
  • 【Spring Boot】数据库持久层框架MyBatis — Spring Boot构建MyBatis应用程序

    Spring Boot是用于快速构建Spring应用程序的框架。MyBatis是一种Java持久化框架,可以帮助开发人员轻松地管理数据库。将Spring Boot与MyBatis结合使用可以使开发人员更容易地创建和管理数据库应用程序。 以下是使用Spring Boot构建MyBatis应用程序的步骤: 添加MyBatis依赖项:在项目的

    2024年02月10日
    浏览(55)
  • 【1 beego学习 -MAC框架与ORM数据库】

    1,由于在github上安装,所以需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量 修改go环境变量 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn 2,设置GOPATH 环境变量,并且将 GOPATH/bin 加入到了环境变量。 3,安装bee go get -u -v github.com/astaxie/beego go get

    2024年02月11日
    浏览(42)
  • 【PHP系统学习】——Laravel框架数据库的连接以及数据库的增删改查的详细教程

    👨‍💻个人主页 :@开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏 :PHP程序开发 —   按照 MVC 的架构,对数据的操作应该放在 Model 中完成,但如果不使用 Model,我们也可以用 laravel框架提供的 D8 类

    2024年04月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包