为了账号安全,请及时绑定邮箱和手机立即绑定

Spring @transactional 是否与 MongoDB 一起使用?

Spring @transactional 是否与 MongoDB 一起使用?

元芳怎么了 2022-07-27 20:52:50
我正在使用 Spring Boot 和 MongoDB 开发一个 Web 应用程序。我想让服务与@transactional spring 注释一起工作,但我不知道这是否真的有效。(我之前没有使用过 mongoDB)。我添加了注释,似乎一切运行良好(应用程序运行,我可以执行所有操作 CRUD),但是,我不知道 Spring 是否忽略了注释并且它像往常一样工作,或者真的在考虑事务性.在其他帖子中,我看到我应该在配置类中添加一个新 bean,以启用 Spring 和 MongoDB 之间的事务性。真的有必要吗?,我只使用单个 Mongo 文档的事务。
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

@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 文档 - 事务


查看完整回答
反对 回复 2022-07-27
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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



查看完整回答
反对 回复 2022-07-27
  • 2 回答
  • 0 关注
  • 480 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号