【AndroidでSQLiteを制する】DAOパターンを導入する
ActivityやFragment等のクラスはいろいろな処理ですぐに肥大化してしまいます。
SQLiteデータベースにアクセスするためにDAOパターンを取り入れます。
今回はデータベースの操作処理をクラス化し、DAOとDTOを実装します。
DAOパターンの実装
まずはBookテーブルに対応したDTOを実装します。テーブル : Bookテーブル
| 論理名 | 物理名 | 型 |
|---|---|---|
| ID | _id | INTEGER |
| タイトル | title | TEXT |
| サブタイトル | subtitle | TEXT |
public class BookDTO {
private int mId;
private String mTitle;
private String mSubtitle;
public int getId() {
return mId;
}
public void setId(int id) {
this.mId = id;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
this.mTitle = title;
}
public String getSubtitle() {
return mSubtitle;
}
public void setSubtitle(String subtitle) {
this.mSubtitle = subtitle;
}
}
続いてDAOを定義します。
今回のDAOはすべてのメソッドを静的メソッドとして定義する予定です。
初回はSQLiteDatabaseインスタンスを取得するメソッドを定義します。
次回からはこのクラスにメソッドを追加していきます。
public class BookDAO {
/**
* SQLiteDatabaseインスタンスを取得する
* @param context コンテキスト
* @param isWritable 書き込み可能
* @return SQLiteDatabaseインスタンス
*/
public static SQLiteDatabase getSqLiteDatabase(Context context , boolean isWritable) {
LoadToSQLiteMasterSQLiteOpenHelper loadToSQLiteMasterSQLiteOpenHelper = new LoadToSQLiteMasterSQLiteOpenHelper(context);
SQLiteDatabase sqLiteDatabase = null;
if(isWritable) {
sqLiteDatabase = loadToSQLiteMasterSQLiteOpenHelper.getWritableDatabase();
} else {
sqLiteDatabase = loadToSQLiteMasterSQLiteOpenHelper.getReadableDatabase();
}
return sqLiteDatabase;
}
}