前回話したO/Rマッピングに悩む日々。外出しているヒマなどない!
ふつーに決め打ちでダカダカコード打てば終わることも、気に入らないのでいつまでも悩み続けて、早1週間。
1週間はえーよ。っていうかもう2011年1ヶ月終わっちまったじゃん!
前回話したO/Rマッピングに悩む日々。外出しているヒマなどない!
ふつーに決め打ちでダカダカコード打てば終わることも、気に入らないのでいつまでも悩み続けて、早1週間。
1週間はえーよ。っていうかもう2011年1ヶ月終わっちまったじゃん!
面白そう。MSDNからこんなのが出るとは思わなかった。
中を見ると、結構無茶と思えることしてまでコードを短くしています。LINQやラムダ式は当たり前w
興味はあるけど、2,940円か。。。ふつーにMSDNの記事として出してくれればよかったのになー
先日、会社の人何人かにオブジェクト指向だとSQLって使いにくいよね?って話をしたんですが、みんな反応薄orz
私の説明の仕方が悪かったんだと思って、言いたいことをまとめていたら、全部↓に書いてあったw
はい、もう言うことありませんw 周知の事実だったんですね。無知でした。
でももうちょっと書きたい。
例えばSQL使ったプログラムって↓みたいな感じになると思うんですよ。
[PHPでPDO使った場合の例] // SQLを書く $query = "SELECT name, age FROM PersonTable WHERE sex=male;"; // DBのインスタンスにSQLを渡して結果を受け取る $statement = $database->query($query);
↑みたいにさ、SQLってさ、検索のロジックと戻り値を書くじゃん。それってさ、関数だよね。だから、SQLを渡して検索させるのってさ、データ保持してるオブジェクトに関数ポインタを渡して検索させるのと同じだよね。
でもってそのロジックも戻り値も不定なわけじゃん(選択する列は任意だし、そもそもINSERTやUPDATEのように戻り値がないSQLもある)。だからSQL受け取るオブジェクト(のクラス)は、渡された関数ポインタの戻り値がどんなものであって許容しなければならないってことになる(↑の例で言えばquery関数の戻り値は不定(PDOだとPDOStatement型が戻りますが))。オブジェクト指向的に(かどうか知りませんが)、そんなよくわかんない関数、外部に公開したくないですよ。
さらにやっかいなのが、SQLが単なる文字列であること。操作(SELECTやINSERT)、選択列、WHERE句等を1文に記述する。しかも操作によって構文が違う。「INSERT INTO ~」とか、INTOいらねーだろって思いますw 英語的に気持ち悪いのかもしれませんが、だったら
METHOD=INSERT TARGET=PersonTable;
みたいな書き方にして欲しいと、オブジェクト指向的に(かどうか知りませんが)思うわけですよ。
最後に、色々ぐぐってみると、オブジェクト指向派とSQL(というかデータ中心指向?)派では、しばしば宗教論争があるらしく、喧嘩の種になるそうです。
色々書きましたが、私はSQLを否定しているわけではありませんよ。オブジェクト指向との親和性の低さを嘆いているだけです。データベースを、文字列を指定するだけで自由に検索できるなんてスバラシイじゃないですか。
しかし、結局、永続化データをオブジェクト指向で扱いたい場合は、、どうすればいいんだ??(意地でも何でもありのquery関数を公開することはしたくない。。。そして特定のテーブルに特化した処理も書きたくない。。。逃げちゃダメだ逃げちゃダメだ逃げちゃry)
どジャアァァ~~~~ん
というわけで2011年、卯年、うさ耳スタンドと言えば大統領のD4C。退廃しきった2010年の私を隣の世界へ捨て、無傷の2011年の私に入れ替わってきました。気分はそんな感じ。
今年もこのどうしようもないジョジョオタをどうぞよろしくお願いします。