美文网首页
SpringBoot使用MongoDB事务实现多文档间原子操作及

SpringBoot使用MongoDB事务实现多文档间原子操作及

作者: wxb2dyj | 来源:发表于2019-02-26 23:56 被阅读0次

今天在开发中尝试使用MongoDB4.0及以上版本中支持的CUID,由于第一次使用,文档也来不及仔细研读,只好先采取拿来主义把项目跑起来。为此搜了不少如何使用的文章,也踩了一些坑,记录如下。

1.pom.xml中引入相关包
首先在pom.xml中引入事务依赖的相关包,建议用最新的版本。


repo.PNG

2.配置application-dev.properties
在该文件中配置replica-set


properties.PNG
3.实现事务管理类
实现后可以用注解方式控制事务。
transactionManager.PNG

4.注入
在实体操作类中需要事务的方法中使用注释@Transactional(rollbackFor = { Exception.class }),且在异常中增加一行代码"TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();"


Transactional.PNG

下面说几个坑:
(1)注解必须是@Transactional(rollbackFor = { Exception.class }),不能仅仅是@Transactional;
(2)如果有捕获异常,则必须加一行代码,否则发生异常时还是能insert到数据库;加了后才能回滚insert操作。

2.PNG
(3)必须在properties文件中配置replica-set,否则报错"Sessions are not supported by the MongoDB cluster to which this client is connected"。配置方式是spring.data.mongodb.uri=mongodb://host1:port1,host2:port2,host3:port3/数据库名称?replicaSet=复制集名称(各host、port及replicaSet的值见作者文章“Win7下MongoDB配置replica-set”),不能分开配置spring.data.mongodb.host、spring.data.mongodb.port、spring.data.mongodb.database。
(4)pom.xml中不必引入spring-data-mongodb包,只需要spring-boot-starter-data-mongodb、spring-data-commons和mongo-java-driver即可。

未完待续...

本文参考了以下文章,在此一并向作者致谢!
参考文章:
(1)Springboot教程系列之 Springboot中的MonogoDB多文档事务
http://it.hzqiuxm.com/springboot%E8%BF%9B%E9%98%B6%E6%95%99%E7%A8%8B%E7%B3%BB%E5%88%97%E4%B9%8B/
(2)spring springmvc 和mongodb 整合时,关于事务的回滚,在配置文件里是怎么配置?(感谢回答者@浮i浅)

https://ask.csdn.net/questions/691493

相关文章

  • SpringBoot使用MongoDB事务实现多文档间原子操作及

    今天在开发中尝试使用MongoDB4.0及以上版本中支持的CUID,由于第一次使用,文档也来不及仔细研读,只好先采...

  • 【转】MongoDB两阶段提交实现事务

    MongoDB数据库中操作单个文档总是原子性的,然而,涉及多个文档的操作,通常被作为一个“事务”,而不是原子性的。...

  • MongoDB 4.0 事务实现解析

    MongoDB 4.0 引入的事务功能,支持多文档ACID特性,例如使用mongo shell进行事务操作 支持 ...

  • mongodb学习(3)

    MongoDB 原子操作所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查...

  • MongoDB 4.0 多文档事务相关

    在MongoDB4.0版本之前只支持单文档事务操作,在4.0版本之后开始支持多文档事务操作 事务和副本集 在Mon...

  • 【Mongodb】事务

    概述 Mongodb 4.0 支持副本集的多文档事务 Mongodb 4.2 支持分片集群的多文档事务 单个Ser...

  • 事务

    在MongoDB中,对单个文档的操作是原子的。因为您可以使用嵌入式文档和数组来捕获单个文档结构中的数据之间的关系,...

  • Win7下MongoDB配置replica-set

    今天在项目开发中需要使用MongoDB4.0.6的事务(如何在springboot中使用mongdb事务以及遇到的...

  • MongoDB: 原子性和事务

    MongoDB: 原子性和事务 原文链接: Atomicity and Transactions 在MongoDB...

  • Redis 事务操作原理

    事务原理剖析 redis事务操作,原理是基于pipe队列实现原子性提交操作,在只想事务操作,相当于将需要提交的命令...

网友评论

      本文标题:SpringBoot使用MongoDB事务实现多文档间原子操作及

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