貧弱なORMのライブラリのクエリビルダを使って辟易して、
もう生のSQLでもいいんじゃないか?と思ったけど、
それでもやっぱり、ORMってだけで、便利だなぁ・・・って、改めて思った話
メリット
- メソッドを補完してくれるエディタであれば、コーディングが早い。
- 可読性が、生のSQLを記述する場合と比較すると上がると思。(かっこ書きになるので命令文とパラメータが一目瞭然なんだと思う)
- メソッドチェーンで繋げるので、部分的な変更がしやすい
- サブクエリをネストできるようなORMだと、意味のある単位でクエリを分割できる
- SQLインジェクションを排除してくれる。
- DBMS(DBの種類)の差異、方言を埋めてくれる。ってのが一番の売りなのかもしれないが、DBを変えることは、ほとんどないので、今のところそんなにメリットは感じない
デメリット
- 複雑なクエリになると、発行されるSQLが想定と違い、SQLに戻してデバッグしなければならない
- ORMのライブラリによっては、複雑なクエリを発行できないことがあり、生のSQLと混在する
カラム名とかに予約語使われていると、エスケープできないライブラリによっては詰むかも
完璧に気持ちよく対応できているORMはないんじゃないか?
いや、ORMに完璧さを求めてはいけないんだな。
あるだけで便利なのだから。