私は ORM を構築しており、各パターンの正確な責任を見つけようとしています。Unit Of Work を使用して 1 つのデータベース トランザクションで更新を管理し、2 つのアカウント間で送金したいとします。次のアプローチは正しいですか?
- リポジトリから取得する
- それらを自分の作業単位に添付します
- ビジネストランザクションとコミットを行いますか?
例:
from = acccountRepository.find(fromAccountId);
to = accountRepository.find(toAccountId);
unitOfWork.attach(from);
unitOfWork.attach(to);
unitOfWork.begin();
from.withdraw(amount);
to.deposit(amount);
unitOfWork.commit();
この例のように、作業単位とリポジトリを個別に使用する必要があります。または、次のようにします。
- Unit Of Work は内部でリポジトリを使用し、オブジェクトをロードする機能を持つべきですか?
- ...または、リポジトリは内部で Unit Of Work を使用し、読み込まれたエンティティを自動的にアタッチする必要がありますか?
すべてのコメントは大歓迎です!