首页 > 解决方案 > 没有显式事务支持的 MongoOperations 的默认提交行为

问题描述

spring-data-mongodb如果在代码中不使用@Autowired MongoOperations且不使用@Transactional显式MongoTransactionManagerBean 初始化,则默认提交行为是什么?

我们可以看到 MongoTxnMgr 是否与 @Transaction 支持一起使用,在日志autocommit:false中可见,然后是显式的;org.mongodb.driver.protocol.commandcommitTransaction

但是,当它不使用时,autocommit同一命令中不存在。在这种情况下,究竟什么时候commit发生?

我们正在使用 Mongo 4.X 服务器,spring-data-mongodb 2.2.5 RELEASE

标签: mongodbcommitspring-data-mongodb

解决方案


从客户端的角度来看,MongoDB 4.X 行为使用或不使用显式事务机制在此讨论中得到澄清

摘录 - 对于 MongoDB 4.X

对于用户,您应该考虑默认情况下会自动提交事务之外的任何写入。因此,每个原子写入要么完全存储,要么被丢弃。


推荐阅读