ORMLite テーブルをつくる
Androidで利用できる, ORマッパー ORMLite の使い方
一足おさきに英語判の方を進めました。
まず, ORMLiteのWebサイトより,
2つのjar ファイルをダウンロードして, Android プロジェクトの libs に入れて, BuildPath に通すとします。
- ormlite-android-4.45.jar
- ormlite-core-4.45.jar
Android で扱うには, CoreとAndroidの2つでO.K.
続いてコードを書いていきます。
必要なコードは
- OrmLiteSqliteOpenHelper を拡張した, データベースのファイルや, テーブル, アップグレードを扱うクラス
- データ, テーブルを表すEntityクラス
- データを操作するDAOクラス
です。上の2つはだいたい形が決まっています。最後は私がいろいろ見ながら作ったものです。
(DAOは次回に回します。)
マネージのクラス
public class ORMDatabaseHelper extends OrmLiteSqliteOpenHelper { private static final String DBFILE = "app.db"; private static int VERSION = 1; public ORMDatabaseHelper( Context context ) { super( context, DBFILE, null, VERSION ); } @Override public void onCreate(SQLiteDatabase db, ConnectionSource cs) { // Add Table Creation try { TableUtils.createTable(cs, Setting.class); } catch ( SQLException oops) { oops.printStackTrace(); } // Add First data insert } @Override public void onUpgrade(SQLiteDatabase db, ConnectionSource cs, int oldVersion, int newVersion) { // Add upgrade operation } }
ORマッパーを使わない場合でも似たようなコードを書きますよね。
テーブル作成部分がTableUtils.createTableという形で, 非常に簡単になっています。テーブル作成のための, SQLが一切存在しません。
Entityクラス
@DatabaseTable(tableName = "setting" ) public class Setting { @DatabaseField(generatedId=true) // For Autoincrement private Integer id; @DatabaseField private String key; @DatabaseField private Integer value; }
Entity(テーブル)のクラスです。単純に必要な, column(データ)を追加していきます。
Annotationを利用します。 ここでは簡単な, id と, String, Integer の値を用意しました。
これらをActivityから呼び出してみましょう。
Activity
public class MainActivity extends Activity { ORMDatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ORMDatabaseHelper dbhelper = new ORMDatabaseHelper(this); } }
これで作成は終了です。次回は, このテーブルにアクセスするためのDAOクラスを作ります。
確認
コード作成時に, DDMSで, SQLiteの構文を見ることができます。これでどんなSQLをはいているのかをきっちり確認できます。
(特に, 外部キーなどを使っている場合, Objectが object_id になってたりなんかしているのでこれをはっきりと確認できます)
参考
NAVER Engineers’ Blog
OrmLite – SQLiteに関する処理を簡潔にする
この2つでだいたい欲しいものは作れそう。あとは, StackOverflowとかの記事をぱらぱら見ながらいけそうです。