概要というか感想デス。
Table Data Gateway
by 渡辺さん
1テーブルにつき1クラスのゲートウェイオブジェクト。実質J2EEパターンのDAOと同等。検索時の返り値を何にするかが検討事項。Map? DTO, ResultSet? OO厨(Level中二)的にはDTOを返したりするが、これが意外とトラブルを招く。joinにうまく対応できずに、プログラム言語側でjoin相当の処理をやったり。
OO厨もちょっと成長すると、Mapでいいやとかあきらめが入る。自動生成によってSQL定義ファイル?とDTOと同期させるというのもあり。
ファウラーたんの例では、ゲートウェイ自体がステートフルで結果セットを保持していた。それ面白いわ。
Row Data Gateway
by 和田さん。
1行につき1クラスのゲートウェイオブジェクト。ActiveRecordからDomainLogic抜いたものともいえる。行ごとの状態管理ができたりするのがメリットかなーと思う(更新フラグとか)。でもそのことはいいそびれた。
やっぱjoinとかに対応するのが難しいのが弱点ですなー。結果として受け取とるのは一つのRecord(の集合)なのに、更新するときは複数テーブル叩かなきゃいかんとか。
和田さんの資料が、こちらにボールを投げてくるものだったので議論が活発に。
ActiveRecord
by 井上さん
どちらかというとRailsのActiveRecordと説明でした。オリジナルのActiveRecordはデータアクセスに関してはRowDataGatewayと一緒。Railsの方は関連を扱うことが出来るのでORマッパーDataMapper的な面が強い。しかし、めちゃDBに依存し、それで良しとしているところが割り切ったところ。「単体テストもDB使うし、画面デザイナもDB入れろ!」まぁそれもアリですな。
Data Mapper
by id:bakockさん
だれもが認める王道パターン。ただもう自力で実装するのは無理だよね。あと一意マップは必要です。一番わかりやすいのはjoinした時に、1対nの1側のオブジェクトが被ってしまうのを回避するため。
以上、発表者のみなさんおつかれさまでした。
飲み会
印象にのこったセリフ。
「マーティンファウラーなら17章かかるところもオレなら2小節だから」(押尾学)
「獄長言ったの誰だぁ!」(僕じゃありません)(id:koichikさん)
「一部の世代にとってOO厨は誰もが通る道(BOOWYみたいなもの)」(id:bakockさん?)
「男はみんなイベント駆動」(id:bakockさん)
「addEventListnerしなきゃイベントは飛んでこない」(id:koichikさん)
「SQLはデータベースドメインのDSL」(誰か)
「(コードを見て)ふーん。それが君の人生観なんだ?」(OO界の某すごい人のエピソード)
とにかくお二人が面白かったデス。
TODO
笑いのツボを強化。