Powered by SmartDoc

TapKitの特徴

データベースのマッピング

データベースとはエンティティ・リレーションシップ(ER)モデルでマッピングします。マッピングの設定を記述したファイルをモデルファイルと呼び、このファイルには他にデータベースと接続するアダプタの情報も記述します。

フェッチしたデータはモデルファイルに基づいてRubyのオブジェクトに変換され、データベースに保存するときは再び適切なデータ型に変換されます。

データベースからの独立

TapKitを使ったプログラミングはデータベースに依存しません。各データベースとの接続にはRuby/DBIなどのライブラリを使い、フレームワークがSQLを生成します。データベースを切り替えるには、モデルファイルのアダプタ接続項目を変更するだけで済みます。

主キーと外部キーの自動生成

主キー、外部キーの値を管理する必要はありません。TapKitが自動的に追跡し、オブジェクトやリレーションシップによって値を生成します(複合主キーの自動生成はサポートしません)。

一意性

フェッチされたオブジェクトは実際のデータと関連付けて管理され、1つのデータに対して2つ以上のオブジェクトが存在しないことが保証されます。例えば、異なる条件でフェッチしたオブジェクト同士を比較するとしても、主キーの値を比べるのではなくオブジェクト同士をそのまま比較するだけで同一のデータであるかどうか確認できます。

フォールティング

TapKitでは、「フォールティング」という処理によってリレーションに関するフェッチの負荷を軽減します。データをフェッチするときにリレーション先のデータまで同時にフェッチされることはありません。リレーション先のデータは「フォールト」という仮のオブジェクトがセットされ、必要になったときに初めてデータがフェッチされます。この処理はすべて自動的に行われます。

苦手な処理

TapKitは普通にデータを扱う分にはSQLを意識させることなく処理できますが、SQLの関数を使ったり、導出表を駆使するような複雑な処理は苦手です。このような場合はSQLを直接発行してください(このときもデータベースの接続はフレームワークが行います)。