前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot使用事务

SpringBoot使用事务

作者头像
dalaoyang
发布2018-06-13 14:50:41
5120
发布2018-06-13 14:50:41
举报
文章被收录于专栏:dalaoyang

事务是很多项目中需要注意的东西,有些场景如果没有加事务控制就会导致一些脏数据进入数据库,本文简单介绍SpringBoot怎样使用事务。

本文使用的是之前整合JPA的文章,具体可以参考 传送门

无论是配置还是pom文件等等,没有任何改变,改变的是测试的controller上面的两个方法,其中一个方法使用了@Transactional注解来进行事务控制。 controller代码如下:

代码语言:javascript
复制
@RestController
public class HouseController {

    @Autowired
    private HouseRepository houseRepository;

    @GetMapping("/test1")
    public String test1(){
        houseRepository.save(new House("house1", "100平方米"));
        houseRepository.save(new House("house2", "100平方米"));
        houseRepository.save(new House("house3", "100平方米"));
        houseRepository.save(new House("house444444444", "100平方米"));
        houseRepository.save(new House("house5", "100平方米"));
        return "success";
    }

    @GetMapping("/test2")
    @Transactional
    public String test2(){
        houseRepository.save(new House("house6", "100平方米"));
        houseRepository.save(new House("house7", "100平方米"));
        houseRepository.save(new House("house8", "100平方米"));
        houseRepository.save(new House("house999999999", "100平方米"));
        houseRepository.save(new House("house10", "100平方米"));
        return "success";
    }
}

test1方法没有加入事务,test2方法加入了事务注解。 启动项目,浏览器访问http://localhost:8888/test1,浏览器如图所示,报错了,因为第四条数据超长了。

查看数据库,可以看到如图:

从上图可以看出,前三条插入成功了,但是后两条都失败了,这并不是我们想要的结果。通常来讲,我们需要的只是成功的话都插入,失败的话都回滚,这时我们调用http://localhost:8888/test2,在次查看数据库,还是之前的三条数据,SpringBoot使用事务建当整合到这里就完成了。

源码下载 :大老杨码云

个人网站:https://www.dalaoyang.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档