Slide 1

Slide 1 text

Realm for Android potatotips #10 CyberAgent, Inc. ߱໼ େ஍

Slide 2

Slide 2 text

About Me Wasabeef (D.Furiya) @wasabeef_jp wasabeef http://wasabeef.jp

Slide 3

Slide 3 text

Realm SQLiteΛஔ͖׵͑Δ໨తͰ࡞ΒΕͨ Mobile DataBase

Slide 4

Slide 4 text

Prerequisites • SDK >= Android 2.3 (9) • Android Studio >= 0.8.6 • JDK version >= 7

Slide 5

Slide 5 text

ग़యɿhttp://realm.io/news/realm-for-android

Slide 6

Slide 6 text

ग़యɿhttp://realm.io/news/realm-for-android

Slide 7

Slide 7 text

ग़యɿhttp://realm.io/news/realm-for-android

Slide 8

Slide 8 text

Ͳ͏΍Β଎͍Β͍͠

Slide 9

Slide 9 text

Setup compile 'io.realm:realm-android:0.71.+'

Slide 10

Slide 10 text

Models public class User extends RealmObject { private String name; private int age; ! @Ignore private int sessionId; ! // Standard getters & setters generated by your IDE… public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSessionId() { return sessionId; } public void setSessionId(int sessionId) { this.sessionId = sessionId; } }

Slide 11

Slide 11 text

Writes // Obtain a Realm instance Realm realm = Realm.getInstance(this, "wasabeef.realm"); ! realm.beginTransaction(); ! // Create a new object User user = realm.createObject(User.class); user.setName("Wasabeef"); user.setEmail(“[email protected]"); ! realm.commitTransaction();

Slide 12

Slide 12 text

Queries ! // Build the query looking at all users: RealmQuery query = realm.where(User.class); ! // Add query conditions: query.equalTo("name", "Wasabeef"); query.or().equalTo(“name”, "Chip"); // Execute the query: RealmResults resultAll = query.findAll(); ! // Or alternatively do the same all at once (the "Fluent interface"): RealmResults result = realm.where(User.class) .equalTo("name", "Wasabeef") .or() .equalTo("name", "Chip") .findAll();

Slide 13

Slide 13 text

Sorting ! // Query RealmResults result = realm.where(User.class).findAll(); ! // Asc RealmResults sortedAscending = result.sort(“age"); ! // Desc RealmResults sortedDescending = result.sort("age", RealmResults.SORT_ORDER_DECENDING);

Slide 14

Slide 14 text

Deletion ! // All changes to data must happen in a transaction realm.beginTransaction(); ! // remove single match result.remove(0); result.removeLast(); ! // Delete all matches result.clear(); ! realm.commitTransaction()

Slide 15

Slide 15 text

RealmObject & RealmResults ThreadؒͰͷड͚౉͠ͷ૝ఆ͸ͯ͠ͳ͍ͷͰ Realm.getInstance()ͱRealmQuery() Λ௨ͯ͠࠶औಘ͢Δඞཁ͕͋Δ

Slide 16

Slide 16 text

Migration ! RealmMigration………… ! ActiveAndroidͱ͔SugarORMͱ͔ͱ ൺ΂ͯ͸͍͚ͳ͍… ! ࣗ෼ͰTableͷ࠶ߏஙͷॲཧΛॻ͔ͳ͍ͱ…

Slide 17

Slide 17 text

๊͑ͯΔ໰୊఺ 1. Setter/Getter͔͠ॻ͚ͳ͍ 2. ENUM͸Supportͯ͠ͳ͍ 3. RealmObjectΛGSONͰSerializeग़དྷͳ͍ 4. Migration͕Πέͯͳ͍

Slide 18

Slide 18 text

Latest 0.71.0 (2014.10.22)

Slide 19

Slide 19 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ