リポジトリパターン
ドメインロジックと保存先の間に置く抽象化。ドメインのコードは Postgres や Mongo ではなく、UserRepository インターフェースと対話する。
エリック・エヴァンスによる DDD の古典的パターンである。リポジトリはドメインエンティティのインメモリコレクションのように振る舞い、SQL・HTTP・Mongo の詳細はインターフェースの裏に隠れる。トランザクションの扱いには Unit of Work と組み合わせる。
リポジトリごとに支配的な集約ルートが一つある複雑なドメインで真価を発揮する。アンチパターンは、ORM の findById/save を包むだけの汎用 IRepository<T> で、利点のない抽象化が一層増えるだけになる。