Data-Model

 view release on metacpan or  search on metacpan

lib/Data/Model/Tutorial/JA.pm  view on Meta::CPAN

=encoding utf8

=head1 NAME

Data::Model::Tutorial::JA - Data::Model::Tutorial日本語版

=head1 Data::Model とは

id:yappo さんがつくっている O/R Mapper。新興のものでチュートリアル的なものがない
ので自分でかいてみることにしました。

とはいえ、Data::Model 自体がまだまだαクオリティですので、チュートリアルもてぬき
です。

現在の Data::Model のドキュメントは Data::Model Track - JPerl Advent Calendar 2009 に良質なドキュメントがありますので、そちらを参考にしてください。
L<http://perl-users.jp/articles/advent-calendar/2009/data-model/>
近い将来、これらのドキュメントが POD に統合されます。

=head1 つかってみる

=head2 DBI を対象につかってみる

Data::Model は、Data::Model のスキーマ定義からCREATE TABLE 文を発行することができ
ます。なので、まずはスキーマ定義を Perl で書きます。

  # lib/Neko/DB/User.pm
  package Neko::DB::User;
  use strict;
  use warnings;
  use base 'Data::Model';
  use Data::Model::Schema sugar => 'myapp';
  use Neko::Columns;
  
  install_model user => schema {
      # primary key
      key 'id';
  
      # カラム定義
      column 'user.id' => { auto_increment => 1 };
      utf8_column 'user.name';
  };
  1;

カラムの詳細な定義は、別ファイルにします。

  # lib/Neko/Columns.pm
  package Neko::Columns;
  use strict;
  use warnings;
  use Data::Model::Schema sugar => 'myapp';
  
  column_sugar 'user.id'
      => int => {
          required => 1,
          unsigned => 1,
      };
  column_sugar 'user.name'
      => 'varchar' => {
          required => 1,
          size     => 255,
      };
  1;

カラムの定義を別ファイルにするというところは、他の O/R Mapper とのおおきな違いで
すね。これによって得られるメリットは「カラム定義の共通化」ですね。たとえば、レコー
ドの作成日付を保存する created_on なんていうのは複数のテーブルで同じ定義をつかい
たいものですから、共通化できると便利です。

=head2 スキーマ定義を実際につかう

これをよびだし、CREATE TABLE 文を発行するには、

  # script/dump_schema.pl
  use strict;
  use warnings;
  use Neko::DB::User;



( run in 0.842 second using v1.01-cache-2.11-cpan-39bf76dae61 )