RoR入門第12回

今日はActiveRecord基礎編。
感想を書く。
…といってもActiveRecord感想というよりは、主にJPA(EclipseLink)の悪口なのだが。

RecordNotFoundException

Rubyスクリプト言語だし、コンパイルエラーとか出ないってわかって使う大人の言語?だからいいんだけど。
JPAでもRecordNotFoundExceptionってのが出る。
こいつはRuntimeExceptionのサブクラスで、例外処理を強要しない。
…なんで?
findメソッド使ってるのにレコードが存在しないという事態が異常事態だから例外が出るのはわかるけど、それは十二分にありうる例外だ。
FileNotFoundExceptionよりずっとありうると思う。
誰か他のユーザがレコードを絶妙なタイミングで削除してしまえばそれだけで発生してしまうんだから。
JPAのRecordNotFoundExceptionはチェック例外が良いのではないかな?

like条件

like句に使用するワイルドカードと同じ文字が検索パラメータに含まれていたときのために、それは自分でエスケープをしなければならないらしい。
至れり尽くせりのRailsらしくない。
何かヘルパーメソッドでもないかな?

joins

結合条件を指定するらしいが…。
ActiveRecordは全部IDデザインパターンだから使わないだろうなあ。
EagerLodingはどうやるのかな?

readonly

joinsやselectを指定した場合は結果として帰ってくるオブジェクトは全てreadonlyを指定したのと同じ状態になるらしい。
そうだよなあ、そうだよなあ。
JPAみたくオブジェクトの配列とかありえないよなあ。

lock

そうだよなあ、そうだよなあ。パート2。
なんでヒント句使わないとできないんだよ、JPA(2.0からは普通に使えるらしいけど…)。