繁体   English   中英

Spring @transactional 与 MongoDB 一起工作吗?

[英]does Spring @transactional work with MongoDB?

我正在使用 Spring Boot 和 MongoDB 开发 Web 应用程序。 我想让服务与 @transactional spring 注释一起工作,但我不知道这是否真的有效。 (我之前没有使用过 mongoDB)。

我添加了注释,似乎一切运行正常(应用程序运行并且我可以执行所有操作 CRUD),但是,我不知道 Spring 是否忽略了注释并且它像往常一样工作,还是真的在考虑事务性.

在其他帖子中,我已经看到我应该在配置类中添加一个新的 bean,以启用 Spring 和 MongoDB 之间的事务性。 真的有必要吗?,我只使用单个 Mongo 文档的事务。

@Transactional 仅适用于 spring-data-mongodb 2.1.0 及更高版本: https : //docs.spring.io/spring-data/mongodb/docs/2.1.0.RELEASE/api/

实际上,您必须添加bean:

@Bean
MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
    return new MongoTransactionManager(dbFactory);
}

我不知道 Spring 是忽略了注解,还是照常工作,还是真的在考虑事务性

为此,您可以在 2 个数据库更新之间抛出异常并检查第一个更新是否已回滚。

但是如果您在单个 Mongo 文档中使用事务,则不需要 @Transactional 注释:

在 MongoDB 中,写入操作在单个文档级别是原子的,即使该操作修改了单个文档中的多个嵌入文档。 MongoDb 文档 - 交易

对于反应式 mongoDB 和 Spring Boot 集成,我在此处提供的答案对人们有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM