永続化をエッジに押しやると、Repositoryパターンが不要になる
from
persistence ignorant
永続化をエッジに押しやると、
Repository
パターンが不要になる
Pushing Persistence to the Edges
アプリケーション層と永続化層を分離する
アプリはコマンドを作成するのみ
永続化層がコマンドから
集約(Aggregate)
を作成し、
トランザクション
制御を実施する
この場合、アプリケーション層ではコマンドを作成するのみなので、
Repository
パターンを考慮しなくてよい
関心事の分離
副作用とドメインを切り離す
ドメインモデルの内部には、永続化にまつわる情報を混入させるべきではない
集約を永続化の関心事から切り離す
PofEAAではActive Recordは過渡期の捨て駒で本命はData Mapperだった
コマンドは
ユースケース
に相当する
コマンドは
集約(Aggregate)
を作るための指示書
状態遷移をCommand化して、実行とイベントはランタイムに任せる
たとえば
GraphQL
のmutationはコマンドや
ユースケース
と同じ扱いをできる
Prisma
が
ActiveRecord
じゃなくて
Data Mapper
な立ち位置なのもこれと関連性がありそう
Prisma を綺麗に使いたければ MVC という発想を忘れるのが良いのでは
CQS
を念頭に
インタフェース
が考えられている
昨今の
関数型プログラミング
の
プログラミングパラダイム
では
Repository
という
メンタルモデル
を一度
アンラーニング
するといいかなとおもった