ORMの仕組み
なんでわざわざそんな変換が必要なの?直接SQL書けばいいんじゃないの?
具体的にはどんな風に対応づけてるの?
遅延ローディングとか即時ローディングって何のこと?
関連データをいつ取りに行くかの戦略だよ。遅延ローディング(Lazy Loading)は「必要になったとき初めてSQLを発行する」方式。例えばuser.postsにアクセスした瞬間にSELECT文が走る。即時ローディング(Eager Loading)は「最初からJOINで一緒に取ってくる」方式だね。遅延ローディングは便利だけど、実は大きな落とし穴があるんだ。
落とし穴って何?
有名なORMってどんなのがあるの?
Active RecordとData Mapperってどう違うの?
どっちがいいの?
小〜中規模ならActive Recordの方がシンプルで書きやすい。でも大規模になるとビジネスロジックとDB操作が混ざって辛くなるんだ。Data Mapperはテストしやすいし、ドメインロジックをDBに依存させずに書ける。ただ設定やコード量が増える。これは「便利さ vs 柔軟性」のトレードオフだね。
ORMを使うとパフォーマンスが悪くなることってあるの?