DBIx::Classの練習
perlでのO/R マッパーについてさっぱりだったので、触ることにした。
そもそもO/Rマッパーって何
そもそもO/Rマッパーという用語そのものを意識した事がなかったので、どういうものか確認。
O/Rマッピング(=Object / Relational Mappingの略称でORMと略されることもあります)とは、オブジェクト指向言語で扱う「オブジェクト」と「リレーショナルデータベース(RDB)のレコード」をマッピング(対応付け)することです。アプリケーションにO/Rマッピングを導入することで、オブジェクトへのデータ取得やオブジェクトデータの永続化といった処理を透過的に行うことができるようになります。またO/Rマッピングはプログラミングでのデータベース操作にかかわる煩雑な作業を軽減し、拡張性・柔軟性を持ったアプリケーションの構築をサポートします。
via 連載:Hibernateで理解するO/Rマッピング(1)
こういった機能を他の言語で使った事はなかった気がする。いや、多分備わってるとは思うけど。
catalystで触る場合
use DBIx::Classに書いてある、
my $schema = Magic::Schema->connect('dbi:SQLite:dbname=db/spell.db'); my $rs = $schema->resultset('Spell')->search;
という処理をcatalystで行う場合、
my $appinfo = $c->model('...')->search;
となり、resultsetの生成までをmodel()が行っている、ということになる。resultsetのメソッドをみると使い方は判るのかもしれない。