データベースとはエンティティ・リレーションシップ(ER)モデルでマッピングします。マッピングの設定を記述したファイルをモデルファイルと呼び、このファイルには他にデータベースと接続するアダプタの情報も記述します。
フェッチしたデータはモデルファイルに基づいてRubyのオブジェクトに変換され、データベースに保存するときは再び適切なデータ型に変換されます。
TapKitを使ったプログラミングはデータベースに依存しません。各データベースとの接続にはRuby/DBIなどのライブラリを使い、フレームワークがSQLを生成します。データベースを切り替えるには、モデルファイルのアダプタ接続項目を変更するだけで済みます。
主キー、外部キーの値を管理する必要はありません。TapKitが自動的に追跡し、オブジェクトやリレーションシップによって値を生成します(複合主キーの自動生成はサポートしません)。
フェッチされたオブジェクトは実際のデータと関連付けて管理され、1つのデータに対して2つ以上のオブジェクトが存在しないことが保証されます。例えば、異なる条件でフェッチしたオブジェクト同士を比較するとしても、主キーの値を比べるのではなくオブジェクト同士をそのまま比較するだけで同一のデータであるかどうか確認できます。
TapKitでは、「フォールティング」という処理によってリレーションに関するフェッチの負荷を軽減します。データをフェッチするときにリレーション先のデータまで同時にフェッチされることはありません。リレーション先のデータは「フォールト」という仮のオブジェクトがセットされ、必要になったときに初めてデータがフェッチされます。この処理はすべて自動的に行われます。
TapKitは普通にデータを扱う分にはSQLを意識させることなく処理できますが、SQLの関数を使ったり、導出表を駆使するような複雑な処理は苦手です。このような場合はSQLを直接発行してください(このときもデータベースの接続はフレームワークが行います)。