読者です 読者をやめる 読者になる 読者になる

Green DAOの使い方を出来るだけ丁寧にまとめました

f:id:kazy1991:20130416052129j:plain

Green DAOについて

androidでORマッパーを使おうとすると,選択肢は

  • ActiveAndroid
  • ORMLite
  • Green DAO

くらいが有名で私は割りとActiveAndroidを使っていたのですが,いろいろあって使い勝手が悪いように感じたので,今回 ORMLiteを高速化したGreen DAOの導入について紹介します.

参考にさせていただいたブログ

GreenDAOを使ってみた - ボクココ

Page not found · GitHub Pages

Green DAO 導入の手順

  • Javaのプロジェクト(andoroidじゃないよ) で Green DAOのgenジェネレータを作成する
  • androidのプロジェクトにsrc-genを吐かせる
  • DAOオブジェクトを呼び出してデータベースを操作する

Green DAOは結構下準備が必要です.ActiveAndroidなどを使ってるとジェネレーターを使うっていう発想がなくて,ここらへんで結構悩んでました.私はサンプルコードの

     // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.

というコメントアウトを見て src-genはジェネレータに吐かせるのかとやっと理解しました.

ジェネレータを作成する

とりあえず 必要そうなjarをダウンロードしてきます.

(リンクはすべて[http://d.hatena.ne.jp/cevid_cpp/20130406/1365246484:title:bookmark] さんのブログを参考にさせて頂きました )

eclipseなどで javaプロジェクトを作成し,いまダウンロードしてきたjarにパスを通します.

eclipseでjarのパスを通す方法

"パスを通す" というのは外部のライブラリをeclipseに認識させるための作業です.

  • まず jarをプロジェクトの libsフォルダにコピーします.
  • eclipseにjarを認識させるためにプロジェクトを右クリックしてリフレッシュを選択します.
  • もう一度右クリックをしプロパティを開きます.

f:id:kazy1991:20130416055951p:plain

  • Java Build Pathを選択し,Add JARsからjarを追加します.
    (おすすめはしませんが,私はどれが必要かわからないので全部ぶっこみました. バージョン違いのほぼ同じjarなどを複数入れた場合ビルドが通らなくなったりするのである程度は注意は必要です)

パスが通ったらこんな感じにコードを書きます.

public class GreenDaoGenerator {

    public static void main(String[] args)  throws Exception {
        Schema schema = new Schema(3, "com.example");
        addEntitiy(schema);
        new DaoGenerator().generateAll(schema, "../YourAndroidProjectName/src-gen");

    }
    
    private static void addaddEntitiy(Schema schema) {
        Entity entity = schema.addEntity("XXX"); //XXXはテーブル名
        entity.addIdProperty().autoincrement(); //以下に必要なプロパティを記述
        entity.addStringProperty("thumnail").notNull();
        entity.addStringProperty("title").notNull();
        entity.addStringProperty("link").notNull();
        entity.addStringProperty("archives");
    }

}

ジェネレータのコードは基本的にこんな感じなので適宜変更すれば使えると思います.

そこまで出来たらジェネレータのコードを実行しましょう!! 自分のandroidプロジェクトに"src-gen"フォルダが作成されていれば成功です.

f:id:kazy1991:20130416061920p:plain

androidのプロジェクトで呼び出してみる.

まずは onCreateらへんでDAOオブジェクトを呼び出します.

public  SanpleEntityDao initDatabase(Context context){
    SQLiteDatabase db = new DaoMaster.DevOpenHelper(context, "XXX", null).getWritableDatabase(); //XXXはデータベース名
    DaoSession daoSession = new DaoMaster(db).newSession();
    SanpleEntityDao entryDao = daoSession.getSanpleEntityDao();
    return entryDao;
}

基本的な処理

インサート

SanpleEntity entity =  new SampleEntity();
// todo 
entityDao.insert(entity);

デリート

entityDao.deleteByKey(id);

リード

List<Entity> entities = entityDao.loadAll();

こんな感じで一度使い方がわかったらかなり便利に使えるのでぜひ 使って見てください (・∀・)