ユニットオブワーク
原文: https://www.martinfowler.com/eaaCatalog/unitOfWork.html
ビジネストランザクションの影響を受けるオブジェクト群の保持し、変更点の把握、並行性問題の解決を行う。
解説の全文は『PofEAA』 184 ページを参照。
データベースからデータを入出力する際、変更点を記録することが重要となる。 変更点の記録を行わなければ、データベースにデータを正しく書き込むことができない。 同様に、生成したオブジェクトはデータベースに追加し、 削除したオブジェクトはデータベースから削除しなければならない。
オブジェクトモデルに変更がある度にデータベースに修正を加えることもできるが、 非常に小さなデータベース コールを大量に行うことになり、パフォーマンスが悪化する。 その上、このやり取りの間ずっとトランザクションを開いておかねばならない。 ビジネス トランザクションが複数のリクエストにまたがるのであれば、 これは現実的な手法ではない。 読み込み一貫性を保持するために 読み込んだオブジェクトをトレースする必要がある場合はなおのこと、 これは現実的な手法ではない。
UnitofWorkは、ビジネストランザクションがデータベースに影響を与える間にあなたが行った作業をすべて記録する。作業が終わると、その作業の結果としてデータベースに変更を加えるものをUnitofWorkが導き出す。