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とかの記事をぱらぱら見ながらいけそうです。
