我正在使用 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 文檔 - 事務
添加回答
舉報
0/150
提交
取消
