SQLiteへのアクセスについての解説記事やサンプルコードなどは、検索すれば出てくると思います。しかし、どうクラス設計するのが良いかを言及している記事は見当たらないので、ここでそれを解説したいと思います。ちなみに本件はSQLite以外のデータベースにも有効な設計方法だと思います。

Githubにコミットしたサンプルコードを元に解説します。

stack3/AndroidDatabaseSample

クラス設計

モデルクラス

  • Note
  • Category

データベースのレコードをオブジェクト化するクラス。クラス名はテーブル名に合わせます。

DAO(データアクセスオブジェクト)クラス

  • NoteDAO
  • CategoryDAO

データベースにアクセスする実装を持つクラス。SQLiteDatabaseオブジェクトを通じてアクセスします。

Transactionクラス

トランザクション処理を毎回ごりごり書くのは大変なので、その辺はこのクラスにまとめて、DAOはトランザクションを意識しない実装にします。

OpenHelperクラス

SQLiteOpenHelperクラスを継承したもの。

  • DBがないときに作成
  • テーブルがないときに作成
  • DBのカラムなどが更新された時に更新
  • DBにアクセスするためのSQLiteDatabaseオブジェクトの生成

その2へつづく
SQLiteデータベースのアクセスとクラス設計 その2