リポジトリとグローバル変数
from
インスタンスフィールドとアプリケーションサービス
リポジトリ
は
ドメインエンティティ
をメモリ上の
コレクション
であるかのように扱うための
テクニック
。
永続化
のため、その実装では
データベース
の
I/O
を実行する。
データベース
の
I/O
を伴うが故、
リポジトリ
はメモリ上の
コレクション
に完全にはなりきれない。
リポジトリ
はinsertまたはupdateをするためのメソッドをもつのが一般的。あるいは
Unit of Workパターン
ではコード上で明示しないかもしれない。いずれにしても、
ドメインエンティティ
の操作は
データベース
上のデータの操作と同じではない。
すると、
リポジトリ
のfindBy()などのメソッドは
データベース
上のデータに対してcopyだ。
ドメインエンティティ
の操作はcopyの操作。
リポジトリ
のupdate()などのメソッドは
データベース
上のデータに代入するようなもの。
code:kotlin
val domainEntity = repository.findBy(id) // copy
domainEntity.modify() // modify copy
repository.save(domainEntity) // swap
to
関数による操作とドメインエンティティの操作