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.

続いてコードを書いていきます。
必要なコードは

  1. OrmLiteSqliteOpenHelper を拡張した, データベースのファイルや, テーブル, アップグレードを扱うクラス
  2. データ, テーブルを表すEntityクラス
  3. データを操作する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とかの記事をぱらぱら見ながらいけそうです。