AndroidとORM
androidでORM(Object-relational mapping(mapper))を使うこと考えた場合、どのような選択があるのだろう。
ContentProvider
正確にはORMではないが、FileやSQLiteデータベースをオブジェクトとしてアプリケーションから操作できるという意味では、ORMと呼んでも良いと思う。 当然だが、標準の実装であり他のライブラリィを必要としないため、事足りる用途であればこれを使えば良いだろう。
gwtorm (http://android.git.kernel.org/?p=tools/gwtorm.git;a=summary)
AOSP(Android Open Source Project)中にあるORM。JDBCとProtocolBufferを使用しており、期待できそうなのだが、ドキュメントが殆ど無く、どんなものなのかよく分からない。
sqlitegen (http://code.google.com/p/sqlitegen/)
SQLiteのデータアクセスクラスを生成するEclipseプラグイン。Wikiを見る限りでは以下のようにアノテーションで修飾したインタフェースからデータベースにアクセスするためのクラスを生成するプロセッサとして動作するようだ。
-
- 同サイトのExampleにあるコード片。
@TableInterface(ImplementingClassName="AbstractConnectionBean",TableName="CONNECTION_BEAN") interface IConnectionBean { @FieldAccessor long get_Id(); @FieldAccessor String getNickname(); @FieldAccessor String getAddress(); @FieldAccessor int getPort(); @FieldAccessor String getPassword(); @FieldAccessor String getColorModel(); @FieldAccessor boolean getForceFull(); @FieldAccessor String getRepeaterId(); }
アノテーションとコードジェネレータ又はコードエンハンサを使った手法は最近のORMでは一般的であり、同様のものを作ろうとしている開発者も多いだろう。 アノテーションの名前や属性を見るとその使用方法が予想できる。
うーん。もっと軽く、それでいてSQLiteをベアで使うよりもスマートな実装は無いだろうか。