はじめに
ORMの実装を通じて、ORMの仕組みや価値が理解できたので、その過程で得られた学びを整理する。
そもそもORMって何をしたいのか?
まずやりたいことは、インスタンスで、データベースのテーブルの1行(レコード)を表現すること。
そして、インスタンスの操作(プロパティの参照や更新)をそのままデータベースの操作に対応させること。
そうすることで、インスタンスを使い、SQLを書かずに直感的にデータベース操作ができるようになる。
ORM抽象クラスのすごさ
ORM抽象クラスのすごさは、継承するだけでデータベース操作の準備が整うこと。
具体的には、以下の流れで自動的にマッピングが行われる。
- クラス名からテーブル名を特定する
- テーブル名からカラム構造(カラム名と型)を取得する
- 取得したカラム情報をもとに、インスタンス内に属性として保持する
この時点で、「どのテーブルの」「どの型の」「どのカラムを」扱うのかが判明しており、あとはそれらの情報をもとにCRUD操作メソッドを抽象化するだけとなる。
おわりに
ORM抽象クラスを実際に自分で構築したことで、フレームワークの裏側で起きていることが「魔法」ではなく、とても自然なことだと実感できた。
この学びの過程で大切だと思った感覚は、
「クラス名からテーブル名を特定することから、様々な情報を取得し、大きなデータを作っていく感覚」
パソコンを立ち上げると、BIOSが起動して、OSを起動させて、、、みたいなパソコンが立ち上がるプロセスを思い出した。
フレームワークだけに限らず、拡張性の高いソフトウェアを設計するための基本的な考え方であると感じた。