永続化をエッジに押しやると、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というメンタルモデルを一度アンラーニングするといいかなとおもった