AIRで、DBを扱う際に面倒だな-と思っていたことをライブラリにしてちょこちょことまとめていたのですが、
使い方を含めてこのブログ上で、すこしずつ情報を公開することにしました。

まず、このライブラリは私がAIRの為に作成している共通ライブラリのDB関連の機能になります。
ソースはこちらで管理しています。

ちょっと、癖がありますが、私がGravity Mail(AIR版メーラ)で使っているライブラリとなっており、自分なりにクライアントに組み込みする為のDBライブラリとして作成することを心がけました。

その特徴として、

  1. テーブルのスキーマはXMLで管理。
  2. 非同期モードで動作することが前提。
  3. テーブルに対する追加・更新・削除などをイベントとして取得可能
    (もちろん、このライブラリを通しての処理の限りますが・・・)
  4. ListCollectionViewなどのインターフェースももって、DataProviderにもなることができる

となっています。

テーブルのスキーマはXMLで管理

このライブラリの特徴でもあるのですが、テーブル定義はXMLで行います。
イメージとしては、昔JavaであったTorqueというライブラリをこのあたりは参考にしています。

このようなXMLの管理をしている理由はいくつかありますが、大きく言えば下記のような理由です。

  • 自動的にDDL文などを作成したため。
  • Mapperとして利用する際に、各フィールドのメタ情報を管理したいため
    この情報により、INSERT文なども自動的に作成します。
  • テーブル構造のバージョン管理もしたいため
    XMLのバージョンと実際に作られているテーブルを見て自動的にカラムを追加するなどの機能を持ちます。
    ただし、バージョンダウンはありません。
  • ドキュメント等をXSLTなどで自動で作りたいため

です。
このDDL関連のイメージは、こちらでみることができます。

非同期モードで動作することが前提

このあたりは結構、悩んだのですが、やはり画面関連の操作を考えると、
非同期モードの方がよいと思い、そのような前提としました。
ただし、なるべく面倒がないようにしているつもりではいます。

テーブルに対する追加・更新・削除などをイベントとして取得可能

たとえば、一覧画面から1レコードを選択して、情報を更新した際に、
自動的に一覧の情報は更新されて欲しいはずです。
このような用途の為に、テーブルの情報を変更した際にイベントを発行するようにしてあります。
イベントを発行、そして、取得する為にはこのライブラリを通してデータの変更をすることが必要です。

たとえば、数(レコード数)が少ないマスター系などはこのイベントを使って、内部キャッシュ情報として保持しておけば、
SQLでもJOINを使わず、そして、同期型関数としてデータを取得できるはずです。
このような手法を使って、非同期モードの使いにくさをカバーしてもらえたらと思います。

ListCollectionViewなどのインターフェースももって、DataProviderにもなることができる

このあたりは、UIを意識した形になっています。
テーブルオブジェクトを、引数に渡すだけでDataGridや、Listとして表示することができます。
上のテーブルに対する追加・更新・削除のイベントを発行する理由は、
このUIの再表示をプログラマがいちいち記述しなくても、自動的に再表示しようという魂胆です。

ちなみに簡単な条件(WHERE文)は指定も可能ですので、
表示したい形にテーブルを作れば簡単にそれらしいアプリも作れるのではと思います。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2011年11月
« 10月   12月 »
 123456
78910111213
14151617181920
21222324252627
282930  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ