ORMについてのメモ

ORM(Object Relational Mapping)とは

  • DBを抽象化してオブジェクトとして扱う方法
  • プログラム上ではオブジェクトとして扱うけど、裏でORMが働いてDBと同期してくれるみたいな
メリット
  • SQL書かなくてもいい
  • プロダクトが各種DBに対応していれば、コードを変更せずにDBを変更できる

SQL書かなくていいと言ってもクエリの生成をメソッドで指示しているような感じなので、SQLの知識は必要。

デメリット
  • 性能に影響する(処理速度、消費メモリ)
  • 生成するクエリの質が問題になることもあるらしい

他にもちゃんと理解していないところだと、ORMを使うことでデータベース設計が難しくなったり、モデリングが難しくなったりするらしい。
設計方面は知識が足りてない。

ORMのパターン2つ

どちらもPofEAAという本に書かれているパターンだそうだ。ActiveRecordってRailsのORMの事かと思ってたら、パターンの名前そのまま使ってるだけなんだね。
PythonではActiveRecordのORMは、SQLObject / Elixir / Storm、DataMapperではSQLAlchemyが代表的ぽい。(ElixirはSQLAlchemyの上に構築されてる)