あたらしものずきっ!

試してみたものとか、遊んでみたものを色々記してみます。

DBIx::Classの練習

perlでのO/R マッパーについてさっぱりだったので、触ることにした。

use DBIx::Class 今日のCPANモジュール

そもそも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のメソッドをみると使い方は判るのかもしれない。

DBIx::Class::ResultSet

DBIx::Class::ResultSet search.cpan.org

覚えてみることにする。