Open4

Python クリーンアーキテクチャ トランザクション管理

かわきんかわきん

クリーンアーキテクチャを採用しているPythonのプロジェクトでのトランザクション管理について考えたい。

リポジトリの実装にはSQAlchemyを使っている。

Usecaseはトランザクションについて関心を持ちたくない。
これは、Usecaseがコミットやロールバックを意識すると、アプリケーションロジックとインフラが密結合になるから。

かわきんかわきん

Sagaパターンやuowパターンを使っていて、トランザクション的な意味合いをドメイン側でも制御したいときはどうするんだ

かわきんかわきん

run_in_transaction(usecase_func, *args)のはボイラープレート感があるので

デコレータでやる?