O/Rマッピング

JPAのサンプルは、たいていデータ構造が手抜き

O/Rマッパーに対してネガティブな意見を見つけた。O/Rマッパーの話 - 工夫と趣向と分別と。 http://d.akinori.org/?date=20060926#p01 一般に、テーブル設計をクラス設計に擦り寄せれば、リレーションを駆使する必要は減る。この罠にはまると、 オブジェクト…

使えるO/Rマッパーの見分け方

SQL以外直さなくていいはずなのに 某ファミレスの業務システムはこんなデータ構造を持っていた。 商品マスタ = { 商品ID(PK), 商品名, 単価 } メニューマスタ = { メニューID(PK), メニュー名 } メニュー別商品 = { 商品ID, メニューID } メニューマスタには…

「インピーダンスミスマッチ」の本質は何か(3)

本来の(OOP登場以前から言われていた)インピーダンスミスマッチの意味は、ものすごくおおざっぱに言うと、SQLはバッチ処理だが言語はレコード指向でしか処理ができないことだった。 そんなミスマッチは埋めようがないじゃないの。 仮にOOPとRDBの間に埋め…

「インピーダンスミスマッチ」の本質は何か(2) -- CやFortranの場合

今検討している「インピーダンスミスマッチ」とは、オブジェクト指向言語とRDBのミスマッチ---「オブジェクト・リレーショナル・インピーダンス・ミスマッチ」の省略形。が、インピーダンスミスマッチという比喩は、実はオブジェクト指向言語の普及よりも古…

行のデータをMapに収容してはいけない理由と、それを解消するMapの実装

「行のデータをMapに収容するのはオブジェクト指向的でない、という話があるが本気か」で、ずれたことを書いていた。 Map否定論は、多くはTypesafeの喪失を嫌ったもののようだ。 Javaという静的型付け言語を使うなら、個々のアトリビュートにも、結果表の行…

行のデータをMapに収容するのはオブジェクト指向的でない、という話があるが本気か

上のエントリのために調べものしてたら、 O/Rマッパーを使わずに、ResultSetのデータをMapに収容するアプローチも あるが、これはオブジェクト指向的ではない。 Javaを使うメリットを放棄していることになるので、やめましょう。 みたいな意見のテキストが複…

「インピーダンスミスマッチ」の本質は何か(1)

2001年にJavaを始めたときにむなしさを感じたのは、ResultSetの形で取得したデータをJavaBeanのプロパティに詰め替えるコードを書いていたとき。 以来、 永続化層から取り出したオブジェクトをそのままViewに渡すと期待通りにレンダリングできて、 Viewから…

来年起きること

大晦日である。 来年J2EE界隈に起きる動きを1つ予想する。 来年は、Hibernate擁護派と否定派の議論を通じて、O/Rマッピングというアイデアの問題と限界が広く認識されるだろう。そして、そもそもO/Rマッピングなんて必要なのか?可能なのか?という根源的な…

Javaの最前線では"オブジェクト−オブジェクトマッピング"は問題にはなっていない

ひが氏の最近の日記を拝読する。 近々SeasarでDxo=Data eXcange Objectという概念がサポートされる見込み。 これはドメインモデルとプレゼンテーションモデルの相互変換を(ほぼ自動で)行うもの。私がずっと「そんなの導入しちゃダメだ」と思っていたオブジェ…

CachedRowSetの衝撃

CachedRowSetで何ができるかを、今日初めて知る。 これはやばいものだ。「テーブル=クラス」思考のO/Rマッパーを不要にしてしまうかもしれない。これこそDAO層を出し入れするのにふさわしいコンテナではないのか。

理想のO/Rマッパーの条件

正美氏の新刊が出る前に、考えられるところまで考えておこう。 最高の生産性とパフォーマンスをたたき出すO/Rマッパーの条件とは何か。 今見えているところでは 「テーブル=クラス」ではない クラスをテーブルにマップするアプローチでは、stableなオブジェ…