ORMって本当に便利か?

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
とかくSQL原理主義者から
・ORMはSQLがかけない雑魚のためのもの
・こんなのに学習コストをかけるのは時間の無駄。そんな暇があったらSQL勉強しろ
・簡単なことを無駄に複雑にしてるだけ。ORM使うと逆に生産性が落ちる
と叩かれがちなORM。みんな本当に便利に使ってる?
2デフォルトの名無しさん:2010/10/05(火) 20:42:08
                         2010年10月5日
           皆様へのお願い

  このスレッドは高次機能障害をもたらす
病理の臨床実験のために立てたものです。

  被験者と研究員のやり取りに使うため、
書き込み等は自重されるようお願いいたします。
もし、書き込み等をすることで不愉快な思いをされましても、
当研究所は責を負いかねます。



                      (社)京都微生物研究所
3デフォルトの名無しさん:2010/10/05(火) 22:06:28
web板でおk
4デフォルトの名無しさん:2010/10/06(水) 10:14:57
ORMライブラリも色々あるだろ
どのライブラリのことを考えているかによって話しが変わってくる

phpなんかはORMを名乗っているツールはあってもpythonやrubyの
ORMライブラリと比較すると、くずしかないし
5デフォルトの名無しさん:2010/10/06(水) 11:51:10
>>1
ORMはマジで糞だよな。
生産性悪いはパフォーマンス悪いはでアプリを使う側にとっては
大迷惑
6デフォルトの名無しさん:2010/10/06(水) 11:57:04
パフォーマンスが悪いって意見には同意しかねるな。面倒なのはN+1問題と再帰SQLくらいだろ。
ORMの欠陥は2度目のSQL学習をさせるのに等しいくらい導入に時間が掛かることか。
7デフォルトの名無しさん:2010/10/06(水) 15:46:13
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
8デフォルトの名無しさん:2010/10/06(水) 15:48:54
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものでした。

アイと研究員とのやり取りに利用するスレッドでしたが、
未知の感染症によりアイちゃんは死んでしまいました。
関係者以外の方もどうぞご自由にお書き込みください。

                  京都大学霊長類研究所


【生物】京都大学霊長類研究所のニホンザル大量死、さらに増加--未知の感染症か
http://gimpo.2ch.net/test/read.cgi/scienceplus/1278655366/
9デフォルトの名無しさん:2010/10/06(水) 20:12:39
ORMとか使うと10年後保守するとき大変だ。
10デフォルトの名無しさん:2010/10/06(水) 22:53:05
どう考えても必須
逆にどうやったら使わずにまともな開発ができるのか知りたい
11デフォルトの名無しさん:2010/10/06(水) 23:11:38
SQLそのまま書くよ。
12デフォルトの名無しさん:2010/10/06(水) 23:58:56
そんなことは分かってるが、取得したレコードセットからオブジェクトへ値を
コピーするようなコードをわざわざ書いているのか、それともレコードセットを
そのまま使うようなやり方をしているのか、いずれにしても今どきありえない。

SQLも主キー検索みたいな単純で定型的なものまで人が書く必要はないはず。

あぁ、もちろん使い捨ての小さなツールとかなら話は別だけど。
13デフォルトの名無しさん:2010/10/07(木) 00:13:43
でもORM使うならそれに合わせたテーブル設計じゃないとね。
14デフォルトの名無しさん:2010/10/07(木) 10:02:08
プロジェクト的にツール使って自動で吐き出すってアプローチが有効か否かって話があって、
有効の場合でも、フリーで出回ってるものを使うか、システムに特化したものを用意するかって所じゃないのん。
15デフォルトの名無しさん:2010/10/07(木) 11:40:15
ORMの学習面の問題にぶち当たるたびにiBatis最強説が起きる。
実際に最強なんだろう。
16デフォルトの名無しさん:2010/10/07(木) 12:35:05
>>4
それは言えてる。
ORMはSQL直接書くより遅くて低機能なわけだけど、PHPの場合、それ以前の問題がある。
PHPに、PerlのDBIx::ClassだとかRubyのActiveRecordみたいな高性能なORMがあればORM使おうかとも思うが、現状ろくなのがない。
17デフォルトの名無しさん:2010/10/07(木) 21:49:32
>>16
Doctrine とかじゃダメなん?

自分にはあってなかったんで結局自作したけど
18デフォルトの名無しさん:2010/10/09(土) 16:25:29
ORM使うぐらいなら、RDBMS使うの止めて、NoSQLにしたほうがいい。
19デフォルトの名無しさん:2010/10/09(土) 22:29:31
それはない。トランザクションがちゃんとしてないデータベースはデータベースじゃない
20デフォルトの名無しさん:2010/10/10(日) 05:34:42
それは勝手な定義。
21デフォルトの名無しさん:2010/12/12(日) 19:27:08
PythonのSQLAlchemyとかはデータベースの行とクラスのインスタンスが
1対1に対応しているけど、PHPだと、データベースのテーブルを扱うクラス
があるだけで、ORMって感じがしないよね
22デフォルトの名無しさん:2011/01/13(木) 23:29:05
>>18
ORMはNoSQLを実現するための一つのソリューションなんだが
23デフォルトの名無しさん:2011/03/10(木) 00:17:32.28
ソリューションw
24デフォルトの名無しさん:2011/04/30(土) 12:58:36.03
LINQは?
25デフォルトの名無しさん:2011/06/19(日) 22:02:51.18
"ORM が危険なアンチパターンだっていうのはどれだけ言っても言い過ぎることはない"
http://tech.a-listers.jp/2011/06/16/orm_is_an_antipattern/

・ORMはSQLベースのモデルよりも最初のうちはシンプルで理解しやすく、手早く書く事ができる。
・効率はどんなプロジェクトでも最初の頃は十分。
・不幸にもそれらのアドバンテージはプロジェクトが大きく複雑になると消失し、
 抽象化は破綻し、開発者はSQLを使わなければならなくなる。
・ORMの抽象化はほぼ100%のプロジェクトで破綻する。
・オブジェクトはリレーショナルなクエリの結果を表現するのには不適切。
・不適切にクエリをオブジェクトにマッピングすることによって、ORMを廃止しない限り
 簡単には修正できない非効率性がアプリケーションのあちこちにばらまかれる
・オブジェクト指向設計はリレーショナルなデータを効率的に表現できない。
 これはORMが解決できないオブジェクト指向デザインの根本的な制限だ。
26デフォルトの名無しさん:2011/06/19(日) 22:44:26.14
データが元々オブジェクトならば、NoSQLにオブジェクトを記録する方がリレーショナルデータベースよりも早い。
27デフォルトの名無しさん:2011/06/19(日) 23:51:11.53
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
28デフォルトの名無しさん:2011/06/20(月) 00:25:11.05
"ORM が危険なアンチパターンとか言っているやつが馬鹿だと思う1つの理由。

この馬鹿は、全部ORMでやろうとする。
29デフォルトの名無しさん:2011/06/20(月) 20:04:45.29
ORMがSQLよりつかえる場面ってそもそもあるの?
30デフォルトの名無しさん:2011/06/21(火) 23:19:01.82
SQLをオブジェクト(変数)に
代入する場面ですべて使える。
31デフォルトの名無しさん:2011/06/22(水) 20:42:40.91
EntityFrameworkのトランザクション周りの気持ち悪さだけ改善してくれたら最強だと思う
32デフォルトの名無しさん:2011/06/22(水) 23:28:16.09
>>25
ITドカタの現場だと、正規化は悪で、横長のでっかいテーブルを作るのが正義じゃん。
なにも考えずにテーブルと一対一に対応したオブジェクトを作っていっちょあがりって感じで、
シンプルに解決されてるんじゃないかな。
33デフォルトの名無しさん:2011/06/23(木) 01:41:25.25
横長テーブル、というか「DBサーバのCPUにはなるべく物を考えさせない」って一派があって実はあれはアレであり。
DB鯖のCPU負荷分散はAP鯖のそれに比べて色々面倒だから。
34デフォルトの名無しさん:2011/06/23(木) 01:46:40.56
最近流行のKVSとは相性が良いんかね
35デフォルトの名無しさん:2011/06/23(木) 03:36:34.79
>>32
×ITドカタの現場だと、
○お前の会社の現場だと、
36デフォルトの名無しさん:2011/06/23(木) 05:15:00.44
列志向だとそうなるよね
37デフォルトの名無しさん:2011/06/23(木) 07:54:21.89
コボラーが現役バリバリのところは横長多いんじゃね
38天使 ◆uL5esZLBSE :2011/07/03(日) 18:25:41.87
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど

もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ

ゴミグラマは社会底辺
39デフォルトの名無しさん:2011/07/03(日) 19:54:49.68
誰か天使◆uZeeeに話しかけてやれよ。
40デフォルトの名無しさん:2011/07/03(日) 20:17:32.02
利休には切腹を申し付ける
41天使 ◆uL5esZLBSE :2011/07/03(日) 22:22:13.98
2011年、Ruby,Perl,PHP,Pythonって並べたときにさ
ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな

今日は不燃物か
42デフォルトの名無しさん:2011/07/05(火) 20:49:13.05
天使ちゃんマジ天使
43デフォルトの名無しさん:2011/11/28(月) 18:32:56.76
EntityFramework便利だよね
44デフォルトの名無しさん:2012/06/16(土) 17:05:50.98
運用始まってから、複数箇所から更新されるテーブルのフラグ項目が間違った値になっているデータを発見した時、バグの原因箇所を特定するのにメチャクチャ苦戦する。

更新用のSQL文字列を必要十分な項目のみで書いていれば、GREPで簡単に特定できるのに、ORMで共通化されているから、特定がやたら困難になることが多い。

結局、プログラマは楽になるが、引き渡されたSEが泣きを見るだけの仕組みだよね。

45デフォルトの名無しさん:2012/06/16(土) 17:20:24.65
あ、やっぱり楽になるんだw
46デフォルトの名無しさん:2012/06/16(土) 21:13:55.77
>>45
本稼動後に発覚するバグや、性能問題から逃げ切れる立場ならw
47デフォルトの名無しさん:2012/06/16(土) 22:05:19.25
>>46
お前の会社は、こういう場合プログラマが逃げられるんですね?

お前の会社の、やり方が間違ってると
まだ気づいていないのですか?
48デフォルトの名無しさん:2012/06/18(月) 20:05:49.19
SQL排除系のORMは、結合が絡んでくると途端に保守性、生産性が下がる
そしてRDB使ってて結合が出てこないことなんてまずない
49デフォルトの名無しさん:2012/06/18(月) 20:17:17.11
view作れば医院で内科医
50デフォルトの名無しさん:2012/06/20(水) 13:04:12.19
実はもうORMどころかSQLまで不要になってるけどな
51デフォルトの名無しさん:2012/06/20(水) 20:07:15.88
KVSとかのこといってるなら、あんなもんはまだおもちゃ
52デフォルトの名無しさん:2012/06/20(水) 20:17:42.68
nosql
53デフォルトの名無しさん:2012/06/22(金) 00:07:52.04
やっぱり、ORMって、よく言われるようにベトナム戦争に深入りするようなもんなん?
54デフォルトの名無しさん:2012/06/22(金) 07:26:34.80
うん?
55デフォルトの名無しさん:2012/06/22(金) 12:05:35.30
Play framework 2に採用されたEbeanってどう思う?
56デフォルトの名無しさん:2012/06/22(金) 22:06:11.33
3年後に生き残っていたら評価するよ。
57デフォルトの名無しさん:2012/06/24(日) 11:31:48.43
46の書き込みみると、ベトナム戦争そのままの展開でワロタ。
58デフォルトの名無しさん:2012/07/16(月) 01:06:01.33
ORMがアンチパターンである11の理由
http://tech.a-listers.jp/2011/06/16/orm_is_an_antipattern/
59デフォルトの名無しさん:2012/07/16(月) 11:54:42.57
ORM押すヤツってデータを集合として考えられないCOBOL脳だよな。
60デフォルトの名無しさん:2012/07/16(月) 12:49:45.92
kvs 最強ですねわかります
61デフォルトの名無しさん:2012/08/01(水) 14:32:27.85
ORM真理教
62デフォルトの名無しさん:2012/08/02(木) 06:22:18.87
SQLとDBMSでできることは極力そっちでやって手続き言語からはdbapiそのまま使った方が
明らかにマシンに対する負荷もプログラマに対する負荷も低いわ
ライブラリに習熟して変換先のSQLも考慮しなきゃいけないとかアホすぎる
63デフォルトの名無しさん:2012/08/02(木) 09:48:53.31
まったくもってその通り
64デフォルトの名無しさん:2012/08/02(木) 13:40:32.85
ストアドはどうかと思う
65デフォルトの名無しさん:2012/08/02(木) 18:54:48.89
単一テーブルへの読み込みと登録、更新、削除ならORM使って楽する。それ以外はSQL書く。そうすれば学習コスト皆無じゃない?
66デフォルトの名無しさん:2012/08/02(木) 22:37:54.88
単一テーブルへの読み書きなんてほとんどなくね?
マスタメンテくらい?
67デフォルトの名無しさん:2012/08/02(木) 22:58:54.49
ORMに自動型変換以外に必要な機能があるとは思わないんだけど、
普通は明示的に型のマッピングを書かせるよね。そんなORMに何の利点があるのか教えてほしい。
RailsのActiveRecord以外で自動型変換があるORMって見たことない。

あと、暗黙的遅延ロードはバグを隠蔽するからいらない。
68デフォルトの名無しさん:2012/08/03(金) 07:53:17.42
単一テーブルに閉じた、単純な用途だと準備が面倒で別に楽にならず
複雑なクエリはXMLなりコード中にライブラリ固有のマッピング定義書きまくるより、SQL叩いたほうが早い

ただ、前者はRailsのActiveRevordが、後者はmyBatisがそこそこうまく解決できてると思う
69デフォルトの名無しさん:2012/08/03(金) 09:30:16.66
これどうやって書くんだ? -> ライブラリについて調べる -> やっぱ対応してねえじゃねえか!
のループもうやだ
DBMSの抽象化とかされても乗り換えることなんてねえよ
70デフォルトの名無しさん:2012/08/03(金) 09:39:05.38
ORMとか常に全件舐めてもまったく速度的に問題なくなってからやれよ
って話
71デフォルトの名無しさん:2012/08/03(金) 11:26:09.34
単一テーブルへの読みは正規化きっちりしてるとたしかに、Join必須になりあんまないかもだけど…。
書き込みとか削除は大いに役立つと思う。はいばねーとのときは、テーブル定義からエンティティクラスを自動生成してた。
たしかにその手間はあるが、最初の一人が苦労すれば、他の人は大いに楽できると思ってるよ。
72デフォルトの名無しさん:2012/08/03(金) 18:45:40.35

便利じゃなくて
便秘
73デフォルトの名無しさん
便利だけど完全なマッピングはできない。
ORMではなくORCぐらいが良かった。

ORC = Object Relation Converter