Upload
karupanerura-xmp
View
393
Download
0
Embed Size (px)
Citation preview
Aniki 〜たよりがいのあるORM〜
id:karupanerura
感謝とお詫び
参加頂きありがとうございます。
準備が滞り急な日程となってしまいすみませんでした。
皆様のお陰で無事開催することができました。
次回からはもうちょっと早く告知します。。
あばうとみー
id:karupanerura
Perl/Java/JS/elisp/etc..
Mobile Factory, Inc.
Gotanda.pm リーダー
#3 ご来場
まことに
ありがとうございます!
DBプログラミング入門寄稿しました
Perl Hackers Hub 買ってください!!
2014/12/23 発売!!
あこがれのあのコーナーにぼくの記事が!
本題
O/R Mapper
Objectに
RDBを
Mapping
べんり
Perlの ORM
DBIx::Class
特徴
でかい 複雑 高機能
イイトコ
リレーション よしなになる
とにかく べんり
ヤナトコ
なかで なにやってるのか ようわからん
IFが なんか
古い気がする...
Teng
特徴
ちいさい 簡潔 低機能
イイトコ
かんたん べんり
IFがモダン
ヤナトコ
リレーション つらい
SearchJoinedも あるけど
もうちょっと 直感的に つかいたい
なんとか したい
Aniki
特徴
そこそこちいさい そこそこ簡潔 そこそこ高機能
Tengに リレーションが
ついた みたいなやつ
Schema
DBIx::Schema::DSL を 採用
Schemaクラス生成 とか
煩わしいこと しないで済む
Migrationも かんたんに 実装できる
(未実装だけど…)
外部キー制約から リレーション情報
を取得
制約だけ書けば それを使って 関連する
レコードを取得可
Plugin
Mooを採用
Roleとして Pluginが 書ける
必要な属性が なければ
applyできない とかできる
もちろん RowのPluginも
書ける
ここから まじめな 資料
シンプルにするために
DBIx::Schema::DSLを採用
Mooを採用
5.14.2以降のみをサポート
DBIx::Schema::DSLとは
id:songmuさん作
DSLでSchemaが書ける
DDL(CREATE TABLE)も生成できる
SQL::Translator::Schemaが取れる
スキーマの情報が得られる
スキーマの情報とは?
どんなテーブルがあるのか
テーブルにどんなカラムがあるのか
PRIMARY KEYはなにか
テーブルの制約条件はなにか
ほかもろもろが分かる
補足1: Tengの場合
Teng::Schema::Dumper
データベースからスキーマ情報をdumpしてDSLにする
Teng::Schema::Loader
データベースから動的にスキーマ情報を得る
補足2: DBICの場合
Schemaクラスをテーブル毎に定義
DBIx::Class::Coreを継承
アクセサにテーブル名とかセットしていく
DBIx::Class::Schema::Loader
dbicdump(1)とかで自動生成可
Mooとは
Mo[ou]seのちっちゃい版
さいきんはこれがナウいらしい
DSLでアクセサとか生やせる
Roleという機能でTraitみたいなことできる
Mooとは
meta object protocolがある
クラスのメタデータにアクセス可
メタプログラミングしやすい
ただし、Mooseが必要
AnikiはMouseにした
DEMO
まとめ
DBIx::ClassもTengもべんり
DBIx::Schema::DSLべんり
Moo/Mo[ou]seべんり
おわり