AndroidとORM その2

コメントで指摘頂いたものも含めてandroidで使えるORMに関してもう少し集約してみる。

ormlite(http://ormlite.com/)

SQLiteを使うオーソドクスなORM。恥ずかしながら知らなかったが、ディスカッションも活発であり期待ができそうだ。
ORMLite Users | Google グループ
タイプとしてはsqlgenのようにアノテーションで修飾したクラスに対応したDAOクラスを生成するが、sqlgenとは違いランタイムにDAOを作成する。つまりはリフレクションを使う訳で、それによるメリットとデメリットがあることが予想できる。

sqldroid(http://code.google.com/p/sqldroid/)

SQLDroidはsqliteJDBCドライバであり正確にはORMでは無いがJDBCを使用する他のORMと組み合わせて使うことが期待できる。プロジェクトがそれほど活発でないのが気になるところ。

db4Objects (http://www.db4o.com/)

db4oはいわゆる"Object Database"でありこれも正確にはORMではないが、オブジェクト永続層を一元に出来、リレーショナルの世界との変換の必要が無いため、ORMを置き換える(省く)ものとして見ることもできる。私は元々ODBが好きで以前にこの日記でも長期に渡って紹介したことがある。
特徴としてはODBのためクラス-オブジェクトグラフを直接データベースに保存することが出来、型セーフな言語にネィティブなクエリを使ってアクセスすることができるので非常に使い方が簡単である。SQLite程ではないにしろ軽量(フットプリント1MB以下)でありAndroidにも組込み可能だ。


個人的には一般的なORMはお腹いっぱいであり、どうせなら以前にひと通り覚えたdb4oを使ってみたいが※、それにはSQLiteを使うことに対してメリットとデメリットを鑑みてメリットが上回ることが必要であり、現状そのような用途を思いつかないのが一番の悩みだ。

androidアプリケーションは基本的にはシングルスレッドモデルであり、更にはアプリケーションに閉じた中でデータベースを使うため、元々組込み用途として開発されたdb4oとの相性も良いと思われる。