Upgrade to Pro — share decks privately, control downloads, hide ads and more …

greenDAO2ObjectBox

 greenDAO2ObjectBox

Yuichi Maekawa

February 15, 2017
Tweet

More Decks by Yuichi Maekawa

Other Decks in Programming

Transcript

  1. greenDao2ObjectBox
    @kaelaela(Yuichi Maekawa)
    Work @ CyberAgent
    Twitter : kaelaela31
    Github : kaelaela

    View Slide

  2. Agenda
    ● What is greenDAO and ObjectBox
    ● How to convert greenDAO to ObjectBox

    View Slide

  3. What is greenDAO and ObjectBox
    ● Made by greenrobot
    ● SQLite database
    ● ORM
    ● Based on code generation

    View Slide

  4. ● Since 2011
    ● ~ v2 :Need to make yourself DAOgenerator
    ● v3 ~ : Enable annotation
    ● Latest version is v3.2.1

    View Slide

  5. ● Two Important concept
    ○ Schema: create db and make all tables and entities
    ○ Entity: add properties and relations to POJO
    ● Daos and entiries are generated by DaoGenerator

    View Slide

  6. v2 architecture
    DaoGenerator: generated class. Do not white code.
    DaoMaster: generated class. Use to get settion.
    DaoSession: generated class. Use to get dao.
    EntityDao: generated class. CRUD from database.
    Entity: generated entity(It has getter/setter. Editable)

    View Slide

  7. v3 architecture
    DaoGenerator: generated class. Do not white code.
    DaoMaster: generated class. Use to get settion.
    DaoSession: generated class. Use to get dao.
    EntityDao: generated class. CRUD from database.
    Entity: your entity. Annotate this. And generate code into this.

    View Slide

  8. ● A new database based on greenDAO
    ● Do not use SQLite
    ● Pretty fast
    ● Latest version is v0.9.7(beta)

    View Slide

  9. ObjectBox
    ● Important concept
    ○ Object(POJO)
    ○ Box
    ○ BoxStore(like db)
    Memo Box
    Memo
    object

    View Slide

  10. ObjectBox
    ● Important concept
    ○ Object(POJO)
    ○ Box
    ○ BoxStore(like db)
    Memo Box

    View Slide

  11. ObjectBox
    ● Important concept
    ○ Object(POJO)
    ○ Box
    ○ BoxStore(like db) Memo Box some Box
    some Box
    some Box
    BoxStore

    View Slide

  12. v0.9.7(beta) architecture
    ● MyObjectBox: build BoxStore
    ● BoxStore: provide box for your object. Likes database.
    ● default.json: crucial ids here. Do not touch.
    ● Memo: your entity. Generated CRUD methods into this.
    ● Memo_: Property class. It is used to access member
    (ex. Memo_.id)

    View Slide

  13. interface
    box.put(memo); //insert, update
    box.remove(memo);
    box.getAll();
    box.query().equal(Memo_.content, "test").build().find();

    View Slide

  14. Convert to ObjectBox(from v3)
    http://greenrobot.org/objectbox/documentation/introduction/
    > Have an app with greenDAO? DaoCompat is for you!
    DaoCompat is an compatibility layer that gives you an greenDAO like API for
    ObjectBox.
    http://greenrobot.org/news/objectbox-presentation-thank-you/
    > For existing apps using greenDAO
    Easy switch to ObjectBox

    View Slide

  15. Convert to ObjectBox(from v3)
    http://greenrobot.org/objectbox/documentation/introduction/
    > Have an app with greenDAO? DaoCompat is for you!
    DaoCompat is an compatibility layer that gives you an greenDAO like API for
    ObjectBox.
    http://greenrobot.org/news/objectbox-presentation-thank-you/
    > For existing apps using greenDAO
    Easy switch to ObjectBox

    View Slide

  16. Good news. Let’s try it.

    View Slide

  17. Build setting
    buildscript {
    repositories {
    maven { url "http://objectbox.net/beta-repo/" }
    }
    }
    dependencies {
    classpath 'io.objectbox:objectbox-gradle-plugin:0.9.7'
    }
    allprojects {
    repositories {
    maven { url "http://objectbox.net/beta-repo/" }
    }
    }

    View Slide

  18. Build setting
    apply plugin: 'io.objectbox'
    dependencies {
    compile 'org.greenrobot:greendao:3.2.0'
    compile 'io.objectbox:objectbox-android:0.9.7'
    compile 'io.objectbox:objectbox-daocompat:0.9.7'
    }
    objectbox {
    daoCompat true
    }

    View Slide

  19. Replace annotations
    ● File paths are chended
    org.greenrobot.greendao.annotation
    > io.objectbox.annotation
    ● Relpace @ToOne @ToMany annotations with @Relation

    View Slide

  20. Initialize MyObjectBox in Application
    @Override public void onCreate() {
    super.onCreate();
    boxStore = MyObjectBox.builder().androidContext(this).build();
    //use to old interface
    daoSession = new DaoSession(boxStore);
    }
    public BoxStore getBoxStore() {
    return boxStore;
    }
    public BoxStore getDaoSession() {
    return daoSession;
    }

    View Slide

  21. That’s all.
    Let’s build!!

    View Slide

  22. View Slide

  23. It is not work yet well.
    And source code is not public
    Wait for v1.

    View Slide

  24. Sample code
    https://github.com/kaelaela/greenDAO2ObjectBox

    View Slide

  25. See you next version released!

    View Slide