PofEAA読書会 第7回
http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ReadingPofEAA007
Chapter10。疲れていたのであまりメモできず。
以下、議論で出た話と自分で思ったことをごちゃ混ぜにして書きます。
Row Data Gateway
和田充史さんによる発表。「ここがわからない」という素直な発表がイイ。議論が活発に。
gateway.insert(data);
-
- Row Data Gatewayの場合
XxGateway gateway = new XxGateway();
・・・
gateway.insert();
- Active Recordとの違いは、ドメインロジックを含まないこと。
Active Record
井上さんによる発表。
- 後半は、Railsに含まれるActiveRecordのデモと解説。ファウラータンが「Active Recordには入れない」と言っている複雑なマッピングがもう実装されてますよ、とのこと。
- 関連、Collection:外部キーや関連テーブルを使ってjoinしてます
- 継承:Single Table Inheritanceを実装。typeフィールドにクラス名持っちゃいます
- 2002年(PofEAAが出版された年)には、こういうものが出てくるとは想定されてなかったよね
- ちょっと整理しなおしたほうがいいかも
- テスト用のモックとか使わない。全員MySQL入れろって。
Data Mapper
発表させていただきました。
時間がなくて急いでたのと、あらかた論点が出ちゃってたのとで、いまいち議論が盛り上がらず。発表の仕方も良くなかったかも。
- Active Recordはドメインロジックとデータアクセスの結合上等。Data Mapperはとにかく切り離そうとしてる。
- 凝集度指向と結合度指向の違いとか、流派あるかも・・・ Presentation Modelの時にもそんな話あったけど
- 結構、チーム分けとかプロセスにも関わってくるよな・・・
- 複雑なマッピングって?
- ここで言ってるのはコレクション、関連、継承。
- 結局、あなたにとっての複雑度7.42はどこなのよ、って話
- FinderをSeparated Interfaceにするあたりの邦訳が謎
- 要は、FinderのInterfaceをdomainパッケージに入れれば、domainパッケージからmapperへの依存は消せるよね、って原書には書いてある
- Data Mapperにしても、ドメインモデルとテーブル構造ってそんなに乖離してないほうがいいよね
- OO系とDAO系のどっちが中心かにもよるかな。OOコンサルみたいな人が来て、「こんなのどうやって永続化すりゃいいんだよ」みたいなモデルを示されることもある。
- ドメイン自体の捉え方が変わることによるデータベースの変更って少ない。断りやすいし。多いのはパフォーマンス上の理由でデータベースを変えること。