システムに矛盾がない状態を作るための方法
例:ユーザ登録処理内の重複確認Existsメソッドは、複数のUserが並列して実行するとチェックをすり抜けてしまう
- ユニークキーによる防衛
- 結論、ルールを守る主体ではなく万が一のセーフティネットとして使うべき
- Pros
- お手軽
- Cons
- コードにドメインのルールが書かれない
- 特定の技術基盤に依存する
- トランザクションによる防衛
- Pros
- コード上にドメインルールを表現できる
- Minos
- 特定の技術基盤に依存する
- C#のトランザクションスコープや、AOPによる
@Transactionアノテーションを使えば特定の技術基盤から開放される - ユニットオブワークでトランザクションを実現する方法もある
- C#のトランザクションスコープや、AOPによる
- 特定の技術基盤に依存する
- Pros