@kyanny's blog

理想主義のない現実主義は無意味である。現実主義のない理想主義は無血液である - ロマン・ロラン フランス思想家

11. オブジェクトリレーショナル振る舞いパターン

一月半くらい開いてしまったがまた読み始めた。むしろたった一月半しか経っていないことに驚いた。三ヶ月くらい前のことに感じる。

ユニットオブワーク

地の文がひたすら眠くなる感じでさっぱり頭に入ってこないが markNew() markDirty() メソッドはわかる。というか Java で書いてあるとはいえコード読んだほうがよっぽど理解しやすい。とはいえ真面目にお勉強をしたくて読んでいるのだからコード以外も読む。要するに対データベースでいうなら更新処理を最後にまとめて行う。そうするためにはどのオブジェクトが更新必要なのかをどこかに保持しなくてはいけない。その保持の仕組みを提供するためのパターンということ。

一意マッピング

要するにキャッシュだよね、とか知ったふうなことを言ってはいけませんね。これが既視感ということか。いやしかしこれの意図は「同じものを別々に読み込み・保存してデータがこわれるのを防ぐ」というものなので、キャッシュ的なご利益は副次的なものだ。しかしそもそも懸念されているようなシチュエーションに出くわした覚えがない。 O/R マッパがうまくやってくれているのだろうし、スレッドなど使わないからかもしれない。

レイジーロード

名前ですべて説明できてるよなーという。実装方法にバリエーションがあるという話だが、不必要に複雑にしすぎているという印象しか残らなかった。やっぱりデータマッパーは馴染みがないしそれが必要(それでなければ実装するのが難しいという意味で)な状況を体験したことがないので、なんでそんな面倒なことを、としか感じられない。レイジーロードみたいな仕組みも、 O/R マッパがやってくれるものでしょ?と思ってしまう(O/R マッパを使えないような限定されたシチュエーションであればそもそもこういった便利のための仕組みも全部邪魔なだけじゃないのという気がする)

どうも批判的な見方になってしまっていけないなーと思うが、しかしあのわかりづらい文章を読んでイライラしないほうがおかしいとも思う。訳がよろしくないとは聞いていたが、「長整数型」には驚かされた。なぜ long int をわざわざ日本語にしたのか理解に苦しむ。こんな本を手に取る読者のなかに long int を理解できないひとなんていないと思うのだが、いったい誰に向けて出版された本なんだこれは。