aniki - the orm as our great brother

Post on 19-Jul-2015

393 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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べんり

おわり

top related