一般にSQLによってデータベースをアクセスする際には、
以下の問題があります。
SQL文の生成
データベースにアクセスするには、selectやinsertなどのSQL文を組みたてる必要があります。
Rubyは文字列処理の機能が豊富ですから、他の言語よりは楽ですが、
それでも繁雑な部分があります。
SQL文の検証
条件によってプログラムが生成するSQL文が変化する場合に、
バグによって文法的に間違ったSQLを生成してしまうことがあります。
(括弧が不一致になったり、andやorの過不足)
このようなバグは、ある特定の条件を与えて実行しないと顕在化しないので、
発見が難しいことがあります。
プログラム内のデータとDBのデータの相互変換
データベースから読んだ値をプログラム内の変数に格納したり、
その反対の処理を行なう処理は、難しいものではありませんが、繁雑で単純ミスが多く発生します。
データ構造の変更によるプログラムの修正
データベースのテーブルに項目が追加になったりした時に、
多くのプログラムに影響が及ぶことがあります。
SQLラッパーライブラリはこのような問題を解決するライブラリです。
データモデルの利用
プログラムと独立にデータモデル定義を持っています。
このデータモデルから、データベースを定義したりドキュメントを生成するツールを用意しています。
個々のプログラムはこのデータモデルを参照することで、
ミスを早めにチェックしたり簡潔な記述を行うことができます。
ラッパーオブジェクト
データベースから読みこんだ値はラッパーオブジェクトとして提供されます。
ラッパーオブジェクトとは、データベースの1レコードをRubyのStructクラスのオブジェクトとして表現したオブジェクトです。
Structのメンバー名はデータベースのメンバー名になり、
各メンバーの持つデータタイプはデータベースの対応する型になります。
追加や更新の時は、ラッパーオブジェクトに値を設定した上で、
それをデータベースに送りこむようなイメージでコーディングできます。
SQLの自動生成
データモデルを参照しながら、SQL文を組み立てます。
SQLのミスがRubyのコンパイルエラーとなりますので、
動作させる環境がなくても、SQLの文法の検証ができます。