请教大家一个 springboot 中 mongodb 事务的问题

2022-07-04 21:03:24 +08:00
 dumbbell5kg
public enum Isolation {
	/**
	 * A constant indicating that dirty reads, non-repeatable reads and phantom reads
	 * can occur. This level allows a row changed by one transaction to be read by
	 * another transaction before any changes in that row have been committed
	 * (a "dirty read"). If any of the changes are rolled back, the second
	 * transaction will have retrieved an invalid row.
	 * @see java.sql.Connection#TRANSACTION_READ_UNCOMMITTED
	 */
	READ_UNCOMMITTED(TransactionDefinition.ISOLATION_READ_UNCOMMITTED),
1176 次点击
所在节点    程序员
6 条回复
Nasei
2022-07-04 21:49:44 +08:00
spring 那个就是关系型数据库隔离级别的定义

mongoDB 和关系型那种不太一样,能不能读到数据和 read concern 有关系,你复制的那段,是它多文档事务的保证
nothingistrue
2022-07-05 09:34:24 +08:00
关系数据库的事务,跟非关系数据库的事务,不是一套体系,不能一起看待。比如说 Redis 的事务仅仅代表多个命令同时执行,都没回滚的。

Spring 的事务管理体系,是完全基于关系数据库的(它貌似压根没有 ORM 当中 O 层面的事务管理,完全用得是 R 层面的事务管理)。
dumbbell5kg
2022-07-05 15:24:55 +08:00
谢谢大佬们的回复,又涨姿势了
dumbbell5kg
2022-07-05 15:46:50 +08:00
@nothingistrue 请教一下是如何知道 “Spring 的事务管理体系,是完全基于关系数据库的” ,我找了一下 spring 的 java 注释,没有看到类似的提示
nothingistrue
2022-07-05 16:48:58 +08:00
@dumbbell5kg 没有明确的说明,只是从经验上来说是这样,你可以看看 TransactionManager 的实现类。
dumbbell5kg
2022-07-06 10:11:16 +08:00
@nothingistrue 好的 了解了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/864058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX