そもそもこの本を読もうと思った動機は「アクティブレコードとデータマッパーの違いを学びたい」だったのでこの章を読むために買ったと言っても過言ではない。その章に差し掛かった。
テーブルデータゲートウェイ
名前でだいたいわかるし UML 図みてもだいたいわかる、具体的にどう利用するか実装もだいたい思い浮かぶ。んだけど例によって説明の文章が難しいのでおれが思い描いてるもので正しく理解できてるのか自信が揺らぐ。
行データゲートウェイ
アクティブレコードと何が違うんだ?と思っていたけど、まぁデータベースとのマッピング部分に関する限り、ほとんど同じものだということかな。そうなんじゃねえかなあと思っていたのは間違ってなかった。
アクティブレコード
行データゲートウェイのゲートウェイクラスに CRUD 以外のビジネスロジックを実装したものをアクティブレコードと呼ぶ、でだいたいオッケーなんだな、と理解した。そういう感じに捉えていたので、概ね間違ってなかったことを確認できて良かった。これだけでもこの本を買った目的の2割くらいは果たせたと思う。
行データゲートウェイにおける Finder クラスに実装する「行セットに対する操作」をクラスの特異メソッドで表現した ActiveRecord は美しいなーと思う。初めて触れた O/R マッパライブラリは Class::DBI だった。あれもなんとなく似ているけどクラスメソッド・インスタンスメソッドの区別を厳密にしきれていなくて曖昧な部分があったんだな、ということがいまさらわかった。だからそこの区別が自分でもわからなくなって悩んだのかもしれない。
データマッパーはこれから読む。
データマッパーも読んだ。
データマッパー
読んだけどやっぱりよくわからなかった。何が嬉しいのかわからない。いままで自分が行データゲートウェイもしくはアクティブレコードばかり使ってきた(さらにいうとそれで事足りるようなものにしか携わってこなかった)のでピンとこないのだろうなぁ。あとデータマッパーを理解するためにはドメインモデルの理解が必須で、そっちもおれはピンときてないので余計にもやっとしているのだと思う。 PersonMapper と AbstractMapper にわけましょう、みたいなのは(単なる継承によるコードの再利用だから)すんなりわかるんだけどそれはデータマッパーとは関係ない話だし。まぁとりあえず読み進めてみて、いろいろパターンを学ぶ上で相補的に理解が進むことを期待しよう。