TypeORM Active Recordパターンとデータマッパーパターンが使える

公式ドキュメントにありますように、TypeORMではActive Recordパターンとデータマッパーパターンのどちらかを選んで使用することができます。

この二つのパターンについてはTypeORMに限らず一般的なものですが、どちらを選択したら良いかはドキュメントにも記載されています。

シンプルで小さなアプリケーションにおいてはActive Recordパターンが適しており、大きく複雑なアプリケーションにおいてはデータマッパーパターンが適しています。

これが何をいっているかは、それぞれのパターンがどのようなものかを理解する必要があります。

Active Recordパターン

Model(TypeORMのEntity)がデータベースを操作する処理(保存、削除、取得)を持ちます。

結果としてDB設計が複雑になるとModelも複雑化します。

データマッパーパターン

Modelにはデータベースを操作するための処理は書きません。代わりにリポジトリと呼ばれるクラスに書きます。

これによって、Modelはシンプルになり、複雑な処理はリポジトリに任せることができます。

公式ドキュメントでは、Active Recordパターンの場合は、姓と名からユーザーを取得するfindByNameという処理をUserクラスに書いています。

一方で、データマッパーパターンの場合は、UserRepositoryというリポジトリクラスにfindByNameという処理を書いています。