SlideShare a Scribd company logo
Realm JAVA 2.2.0
Build better apps, faster apps
Author: Doi Thanh Thinh
Savvycom JSC
1Doi Thanh Thinh - Savvycom JSC
SQLite problems
• Queries too slow
• Complex
relationships
• Nest SELECT, JOIN
• Migration
2Doi Thanh Thinh - Savvycom JSC
SQLite problems
No-SQL SQLite
A
B
D
G
C
FE
Realm.getA().getC().getF();
SELECT user.name, user.email
FROM user
INNER JOIN shop ON user.id =
shop.userid INNER JOIN city ON
user.cityid = city.id WHERE user.name =
'the flash'
3Doi Thanh Thinh - Savvycom JSC
1. What Realm Is
2. Compare and contrast with SQLite
3. Implement Realm
4. Example
Overview
4Doi Thanh Thinh - Savvycom JSC
 Realm is a mobile database and a replacement
for SQLite
 Core is written in C++
 Cross platform mobile database
What Realm Is
5Doi Thanh Thinh - Savvycom JSC
 Advantages
 Faster than SQLite
 Support in-memory database
 Custom migrating
 The Realm file can be stored encrypted on disk by standard AES-256
encryption
 Missing Features
 Auto-incrementing ids
 Compoud primary keys
Features
6Doi Thanh Thinh - Savvycom JSC
Prerequisites
• Do not support Java outside of Android at the moment
• Android Studio >= 1.5.1
• A recent version of the Android SDK
• JDK version >=7
• Support all Android versions since API Level 9 (Android
2.3 Gingerbread & above)
7Doi Thanh Thinh - Savvycom JSC
Benchmarks
Faster than SQLite (up to 10x speed up over raw SQLite )
8Doi Thanh Thinh - Savvycom JSC
Benchmarks
9Doi Thanh Thinh - Savvycom JSC
Benchmarks
10Doi Thanh Thinh - Savvycom JSC
Step 1: Add the following class path dependency to the project level
build.gradle file.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:2.2.0"
}
}
Step 2: Apply the realm-android plugin to the top of application level
build.gradle file.
apply plugin: 'realm-android'
Installation
11Doi Thanh Thinh - Savvycom JSC
 Models: Realm model classes are created by
extending the RealmObject base class.
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; }
}
Implement Realm
Custom methods:
public boolean hasLongName() {
return name.length() > 7;
}
12Doi Thanh Thinh - Savvycom JSC
 Field types:
Supports the following field types:
boolean, byte, short, int, long, float, double, String, Date and
byte[].
The boxed types Boolean, Byte, Short, Integer, Long, Float and
Double
 @Required: used to tell Realm to enforce checks to disallow
null values
 @Ignore: a field should not be persisted to disk
 @PrimaryKey : a primary key field
 @Index will add a search index to the field
Implement Realm: Types fields
13Doi Thanh Thinh - Savvycom JSC
Relationships
N – 1
public class Contact extends
RealmObject {
private Email email;
// Other fields…
}
N - N
public class Contact extends
RealmObject {
public RealmList<Email> emails;
// Other fields…
}
You can use this to model
both one-to-many, and
many-to-many
relationships.
14Doi Thanh Thinh - Savvycom JSC
Conditions of Queries
 between(), greaterThan(), lessThan(), greaterThanOrEqualTo() &
lessThanOrEqualTo()
 equalTo() & notEqualTo()
 contains(), beginsWith() & endsWith()
 isNull() & isNotNull()
 isEmpty() & isNotEmpty()
15Doi Thanh Thinh - Savvycom JSC
RealmResults<User> r = realm.where(User.class)
.greaterThan("age", 10) //implicit AND
.beginGroup()
.equalTo("name", "Peter")
.or()
.contains("name", "Jo")
.endGroup()
.findAll();
Conditions of Queries
RealmResults<User> result = realm.where(User.class).findAll();
result = result.sort("age"); // Sort ascending
result = result.sort("age", Sort.DESCENDING);
16Doi Thanh Thinh - Savvycom JSC
Insert
Realm myRealm = Realm.getInstance(this);
Person person2 = new Person();
person2.setId("U2");
person2.setName("John");
myRealm.beginTransaction();
// copy the object to realm. Any further changes must happen on realmPerson
Person realmPerson = myRealm.copyToRealm(person2);
myRealm.commitTransaction();
Dog dog1 = myRealm.createObject(Dog.class);
// Set its fields
dog1.setId("A");
dog1.setName("Fido");
dog1.setColor("Brown");
myRealm.commitTransaction(); 17Doi Thanh Thinh - Savvycom JSC
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Dog myDog = realm.createObject(Dog.class);
myDog.setName("Fido");
myDog.setAge(1);
}
});
Dog myDog = realm.where(Dog.class).equalTo("age", 1).findFirst();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Dog myPuppy = realm.where(Dog.class).equalTo("age", 1).findFirst();
myPuppy.setAge(2);
}
});
myDog.getAge(); // => 2
Auto-Updating
Auto Update Realtime
18Doi Thanh Thinh - Savvycom JSC
Example
public class Person extends
RealmObject {
private String id;
private String name;
private RealmList<Dog> dogs;
// getters and setters
}
public class Dog extends RealmObject {
private String id;
private String name;
private String color;
// getters and setters
}
19Doi Thanh Thinh - Savvycom JSC
Example
// persons => [U1,U2]
RealmResults<Person> persons = realm.where(Person.class)
.equalTo("dogs.color", "Brown")
.findAll();
// r1 => [U1,U2]
RealmResults<Person> r1 = realm.where(Person.class)
.equalTo("dogs.name", "Fluffy")
.equalTo("dogs.color", "Brown")
.findAll();
// r2 => [U2]
RealmResults<Person> r2 = realm.where(Person.class)
.equalTo("dogs.name", "Fluffy")
.findAll()
.where()
.equalTo("dogs.color", "Brown")
.findAll();
.where()
.equalTo("dogs.color", "Yellow")
.findAll();
20Doi Thanh Thinh - Savvycom JSC
Insert/Update
Asynchronous Transactions:
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
User user = bgRealm.createObject(User.class);
user.setName("John");
user.setEmail("john@corporation.com");
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
// Transaction was a success.
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
// Transaction failed and was automatically canceled.
}
});
Avoid blocking the UI thread
21Doi Thanh Thinh - Savvycom JSC
Delete
// obtain the results of a query
final RealmResults<Dog> results = realm.where(Dog.class).findAll();
// All changes to data must happen in a transaction
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// remove single match
results.deleteFirstFromRealm();
results.deleteLastFromRealm();
// remove a single object
Dog dog = results.get(5);
dog.deleteFromRealm();
// Delete all matches
results.deleteAllFromRealm();
}
});
22Doi Thanh Thinh - Savvycom JSC
JSON
• It is possible to add RealmObjects represented as JSON directly to Realm .
they are represented as a String, a JSONObject or an InputStream
• Single object is added through Realm.createObjectFromJson()
• lists of objects are added using Realm.createAllFromJson().
// A RealmObject that represents a city
public class City extends RealmObject {
private String city;
private int id;
// getters and setters left out ...
}
// Insert from a string
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.createObjectFromJson(City.class, "{ city: "Copenhagen", id: 1 }");
}
}); 23Doi Thanh Thinh - Savvycom JSC
Demo
24Doi Thanh Thinh - Savvycom JSC
Resources
Official Site for Realm
https://realm.io/
Realm Full API for Java
http://realm.io/docs/java/latest/api/
Realm Browser:
https://github.com/realm/realm-cocoa/tree/master/tools/RealmBrowser
Github:
https://github.com/thinhdt/DemoRealm
25Doi Thanh Thinh - Savvycom JSC

More Related Content

PPT
WebSocket JSON Hackday
PDF
dotSwift - From Problem to Solution
PPTX
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
PPTX
Testable, Object-Oriented JavaScript
PDF
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
PDF
Using Dojo
PDF
Di web tech mail (no subject)
KEY
SOLID Principles
WebSocket JSON Hackday
dotSwift - From Problem to Solution
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Testable, Object-Oriented JavaScript
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
Using Dojo
Di web tech mail (no subject)
SOLID Principles

What's hot (18)

PDF
Aesthetics and the Beauty of an Architecture
PDF
Aplikasi rawat-inap-vbnet
PPTX
Jquery dojo slides
PDF
Get Back in Control of Your SQL with jOOQ at #Java2Days
PDF
Overview of The Scala Based Lift Web Framework
PDF
Overview Of Lift Framework
PDF
BDD, ATDD, Page Objects: The Road to Sustainable Web Testing
PDF
The Ring programming language version 1.9 book - Part 53 of 210
PDF
Single page webapps & javascript-testing
PDF
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
PPT
Intoduction on Playframework
PPTX
Windows Azure Storage
PPTX
Graph Database workshop
PDF
Certified Pseudonym Colligated with Master Secret Key
PDF
What makes a good bug report?
PPTX
分散式系統
ODP
MQTT and Java - Client and Broker Examples
PDF
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Aesthetics and the Beauty of an Architecture
Aplikasi rawat-inap-vbnet
Jquery dojo slides
Get Back in Control of Your SQL with jOOQ at #Java2Days
Overview of The Scala Based Lift Web Framework
Overview Of Lift Framework
BDD, ATDD, Page Objects: The Road to Sustainable Web Testing
The Ring programming language version 1.9 book - Part 53 of 210
Single page webapps & javascript-testing
Writing SOLID C++ [gbgcpp meetup @ Zenseact]
Intoduction on Playframework
Windows Azure Storage
Graph Database workshop
Certified Pseudonym Colligated with Master Secret Key
What makes a good bug report?
分散式系統
MQTT and Java - Client and Broker Examples
Maven + Jsf + Richfaces + Jxl + Jdbc - Complete Code Example
Ad

Viewers also liked (6)

PPTX
Reactive programming with RxAndroid
PPTX
Building Apps Faster with Lightning and Winter '17
PPTX
Vietnam Mobile Report Q1 2016
PDF
Vietnam Mobile Report Q3 2016
PDF
Vietnam E-commerce Report 2016
Reactive programming with RxAndroid
Building Apps Faster with Lightning and Winter '17
Vietnam Mobile Report Q1 2016
Vietnam Mobile Report Q3 2016
Vietnam E-commerce Report 2016
Ad

Similar to Realm Java 2.2.0: Build better apps, faster apps (20)

ODP
Realm Mobile Database - An Introduction
PPTX
Present realm
ODP
Networking and Data Access with Eqela
PDF
Joe Walker Interactivewebsites Cometand Dwr
PPT
Struts 2 + Spring
PDF
Painless Persistence with Realm
PDF
PPTX
The State of JavaScript (2015)
PDF
Testing in android
PPTX
RealmDB for Android
PDF
Painless Persistence in a Disconnected World
PDF
Vaadin 7
KEY
Zendcon 09
PDF
Hi, I need some one to help me with Design a client-server Chat so.pdf
PDF
HTML5 for the Silverlight Guy
PDF
Android and the Seven Dwarfs from Devox'15
PDF
PDF
Launching Beeline with Firebase
PDF
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
PDF
Addressing Scenario
Realm Mobile Database - An Introduction
Present realm
Networking and Data Access with Eqela
Joe Walker Interactivewebsites Cometand Dwr
Struts 2 + Spring
Painless Persistence with Realm
The State of JavaScript (2015)
Testing in android
RealmDB for Android
Painless Persistence in a Disconnected World
Vaadin 7
Zendcon 09
Hi, I need some one to help me with Design a client-server Chat so.pdf
HTML5 for the Silverlight Guy
Android and the Seven Dwarfs from Devox'15
Launching Beeline with Firebase
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
Addressing Scenario

More from Savvycom Savvycom (20)

PDF
Serenity-BDD training
PDF
Best PHP Framework For 2016
PDF
Vietnam - Asia's newest IT and Outsourcing Tiger
PDF
Vietnam smartphone usage
PPTX
Mobile payment
PPTX
Introduction of Big data, NoSQL & Hadoop
PPT
Swift Introduction
PPTX
Project manegement
PPTX
Business Etiquette Training
PPTX
Pros and Cons of Blackberry 10
PPTX
Do's and Don'ts in mobile game development
PPTX
Trends of Information Technology in 2013
PPTX
Cloud computing - Pros and Cons
PPTX
Steps of outsourcing strategy
PPTX
Outsourcing to asia
PPTX
The role of QR code in daily life
PPTX
Why are social games so successful?
PPTX
What makes a complete mobile site
PPTX
From app idea to reality
PPTX
Native app or web app
Serenity-BDD training
Best PHP Framework For 2016
Vietnam - Asia's newest IT and Outsourcing Tiger
Vietnam smartphone usage
Mobile payment
Introduction of Big data, NoSQL & Hadoop
Swift Introduction
Project manegement
Business Etiquette Training
Pros and Cons of Blackberry 10
Do's and Don'ts in mobile game development
Trends of Information Technology in 2013
Cloud computing - Pros and Cons
Steps of outsourcing strategy
Outsourcing to asia
The role of QR code in daily life
Why are social games so successful?
What makes a complete mobile site
From app idea to reality
Native app or web app

Recently uploaded (20)

PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
System and Network Administration Chapter 2
PPTX
ai tools demonstartion for schools and inter college
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
medical staffing services at VALiNTRY
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
AI in Product Development-omnex systems
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Digital Strategies for Manufacturing Companies
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
Reimagine Home Health with the Power of Agentic AI​
Adobe Illustrator 28.6 Crack My Vision of Vector Design
System and Network Administration Chapter 2
ai tools demonstartion for schools and inter college
PTS Company Brochure 2025 (1).pdf.......
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Design an Analysis of Algorithms II-SECS-1021-03
Upgrade and Innovation Strategies for SAP ERP Customers
Softaken Excel to vCard Converter Software.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
medical staffing services at VALiNTRY
How Creative Agencies Leverage Project Management Software.pdf
AI in Product Development-omnex systems
How to Choose the Right IT Partner for Your Business in Malaysia
Odoo POS Development Services by CandidRoot Solutions
wealthsignaloriginal-com-DS-text-... (1).pdf
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Digital Strategies for Manufacturing Companies
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Reimagine Home Health with the Power of Agentic AI​

Realm Java 2.2.0: Build better apps, faster apps

  • 1. Realm JAVA 2.2.0 Build better apps, faster apps Author: Doi Thanh Thinh Savvycom JSC 1Doi Thanh Thinh - Savvycom JSC
  • 2. SQLite problems • Queries too slow • Complex relationships • Nest SELECT, JOIN • Migration 2Doi Thanh Thinh - Savvycom JSC
  • 3. SQLite problems No-SQL SQLite A B D G C FE Realm.getA().getC().getF(); SELECT user.name, user.email FROM user INNER JOIN shop ON user.id = shop.userid INNER JOIN city ON user.cityid = city.id WHERE user.name = 'the flash' 3Doi Thanh Thinh - Savvycom JSC
  • 4. 1. What Realm Is 2. Compare and contrast with SQLite 3. Implement Realm 4. Example Overview 4Doi Thanh Thinh - Savvycom JSC
  • 5.  Realm is a mobile database and a replacement for SQLite  Core is written in C++  Cross platform mobile database What Realm Is 5Doi Thanh Thinh - Savvycom JSC
  • 6.  Advantages  Faster than SQLite  Support in-memory database  Custom migrating  The Realm file can be stored encrypted on disk by standard AES-256 encryption  Missing Features  Auto-incrementing ids  Compoud primary keys Features 6Doi Thanh Thinh - Savvycom JSC
  • 7. Prerequisites • Do not support Java outside of Android at the moment • Android Studio >= 1.5.1 • A recent version of the Android SDK • JDK version >=7 • Support all Android versions since API Level 9 (Android 2.3 Gingerbread & above) 7Doi Thanh Thinh - Savvycom JSC
  • 8. Benchmarks Faster than SQLite (up to 10x speed up over raw SQLite ) 8Doi Thanh Thinh - Savvycom JSC
  • 11. Step 1: Add the following class path dependency to the project level build.gradle file. buildscript { repositories { jcenter() } dependencies { classpath "io.realm:realm-gradle-plugin:2.2.0" } } Step 2: Apply the realm-android plugin to the top of application level build.gradle file. apply plugin: 'realm-android' Installation 11Doi Thanh Thinh - Savvycom JSC
  • 12.  Models: Realm model classes are created by extending the RealmObject base class. 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; } } Implement Realm Custom methods: public boolean hasLongName() { return name.length() > 7; } 12Doi Thanh Thinh - Savvycom JSC
  • 13.  Field types: Supports the following field types: boolean, byte, short, int, long, float, double, String, Date and byte[]. The boxed types Boolean, Byte, Short, Integer, Long, Float and Double  @Required: used to tell Realm to enforce checks to disallow null values  @Ignore: a field should not be persisted to disk  @PrimaryKey : a primary key field  @Index will add a search index to the field Implement Realm: Types fields 13Doi Thanh Thinh - Savvycom JSC
  • 14. Relationships N – 1 public class Contact extends RealmObject { private Email email; // Other fields… } N - N public class Contact extends RealmObject { public RealmList<Email> emails; // Other fields… } You can use this to model both one-to-many, and many-to-many relationships. 14Doi Thanh Thinh - Savvycom JSC
  • 15. Conditions of Queries  between(), greaterThan(), lessThan(), greaterThanOrEqualTo() & lessThanOrEqualTo()  equalTo() & notEqualTo()  contains(), beginsWith() & endsWith()  isNull() & isNotNull()  isEmpty() & isNotEmpty() 15Doi Thanh Thinh - Savvycom JSC
  • 16. RealmResults<User> r = realm.where(User.class) .greaterThan("age", 10) //implicit AND .beginGroup() .equalTo("name", "Peter") .or() .contains("name", "Jo") .endGroup() .findAll(); Conditions of Queries RealmResults<User> result = realm.where(User.class).findAll(); result = result.sort("age"); // Sort ascending result = result.sort("age", Sort.DESCENDING); 16Doi Thanh Thinh - Savvycom JSC
  • 17. Insert Realm myRealm = Realm.getInstance(this); Person person2 = new Person(); person2.setId("U2"); person2.setName("John"); myRealm.beginTransaction(); // copy the object to realm. Any further changes must happen on realmPerson Person realmPerson = myRealm.copyToRealm(person2); myRealm.commitTransaction(); Dog dog1 = myRealm.createObject(Dog.class); // Set its fields dog1.setId("A"); dog1.setName("Fido"); dog1.setColor("Brown"); myRealm.commitTransaction(); 17Doi Thanh Thinh - Savvycom JSC
  • 18. realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { Dog myDog = realm.createObject(Dog.class); myDog.setName("Fido"); myDog.setAge(1); } }); Dog myDog = realm.where(Dog.class).equalTo("age", 1).findFirst(); realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { Dog myPuppy = realm.where(Dog.class).equalTo("age", 1).findFirst(); myPuppy.setAge(2); } }); myDog.getAge(); // => 2 Auto-Updating Auto Update Realtime 18Doi Thanh Thinh - Savvycom JSC
  • 19. Example public class Person extends RealmObject { private String id; private String name; private RealmList<Dog> dogs; // getters and setters } public class Dog extends RealmObject { private String id; private String name; private String color; // getters and setters } 19Doi Thanh Thinh - Savvycom JSC
  • 20. Example // persons => [U1,U2] RealmResults<Person> persons = realm.where(Person.class) .equalTo("dogs.color", "Brown") .findAll(); // r1 => [U1,U2] RealmResults<Person> r1 = realm.where(Person.class) .equalTo("dogs.name", "Fluffy") .equalTo("dogs.color", "Brown") .findAll(); // r2 => [U2] RealmResults<Person> r2 = realm.where(Person.class) .equalTo("dogs.name", "Fluffy") .findAll() .where() .equalTo("dogs.color", "Brown") .findAll(); .where() .equalTo("dogs.color", "Yellow") .findAll(); 20Doi Thanh Thinh - Savvycom JSC
  • 21. Insert/Update Asynchronous Transactions: realm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm bgRealm) { User user = bgRealm.createObject(User.class); user.setName("John"); user.setEmail("john@corporation.com"); } }, new Realm.Transaction.OnSuccess() { @Override public void onSuccess() { // Transaction was a success. } }, new Realm.Transaction.OnError() { @Override public void onError(Throwable error) { // Transaction failed and was automatically canceled. } }); Avoid blocking the UI thread 21Doi Thanh Thinh - Savvycom JSC
  • 22. Delete // obtain the results of a query final RealmResults<Dog> results = realm.where(Dog.class).findAll(); // All changes to data must happen in a transaction realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { // remove single match results.deleteFirstFromRealm(); results.deleteLastFromRealm(); // remove a single object Dog dog = results.get(5); dog.deleteFromRealm(); // Delete all matches results.deleteAllFromRealm(); } }); 22Doi Thanh Thinh - Savvycom JSC
  • 23. JSON • It is possible to add RealmObjects represented as JSON directly to Realm . they are represented as a String, a JSONObject or an InputStream • Single object is added through Realm.createObjectFromJson() • lists of objects are added using Realm.createAllFromJson(). // A RealmObject that represents a city public class City extends RealmObject { private String city; private int id; // getters and setters left out ... } // Insert from a string realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { realm.createObjectFromJson(City.class, "{ city: "Copenhagen", id: 1 }"); } }); 23Doi Thanh Thinh - Savvycom JSC
  • 24. Demo 24Doi Thanh Thinh - Savvycom JSC
  • 25. Resources Official Site for Realm https://realm.io/ Realm Full API for Java http://realm.io/docs/java/latest/api/ Realm Browser: https://github.com/realm/realm-cocoa/tree/master/tools/RealmBrowser Github: https://github.com/thinhdt/DemoRealm 25Doi Thanh Thinh - Savvycom JSC