Вступление
Если вы следили за последними тенденциями в разработке для Android, вы, вероятно, слышали о Realm . Realm — это легкая база данных, которая может заменить библиотеки SQLite и ORM в ваших проектах Android.
По сравнению с SQLite Realm работает быстрее и обладает множеством современных функций, таких как поддержка JSON, свободный API, уведомления об изменениях данных и поддержка шифрования, которые облегчают жизнь разработчикам Android.
В этом кратком совете вы узнаете основы Realm для Android. В этом уроке я буду использовать Realm v0.84.1 .
1. Добавление области в проект
 Чтобы использовать Realm в проекте Android, вам необходимо добавить его в качестве зависимости compile в файл build.gradle модуля приложения . 
 groovy compile 'io.realm:realm-android:0.84.1' 
2. Создание Царства
Область похожа на базу данных SQLite. С ним связан файл, который после создания будет сохранен в файловой системе Android.
  Чтобы создать новое Realm, вы можете вызвать статический метод Realm.getInstance из любого Activity . 
 java Realm myRealm = Realm.getInstance(context); 
  Обратите внимание, что вызов Realm.getInstance без передачи ему RealmConfiguration приводит к созданию файла Realm с именем default.realm . 
  Если вы хотите добавить другую область в свое приложение, вы должны использовать объект RealmConfiguration.Builder и дать файлу области уникальное имя. 
 java Realm myOtherRealm = Realm.getInstance( new RealmConfiguration.Builder(context) .name("myOtherRealm.realm") .build() ); 
  3. Создание RealmObject 
  Любой JavaBean может храниться в Realm, если он расширяет класс RealmObject .  Если вам интересно, что такое JavaBean, это просто Java-класс, который сериализуем, имеет конструктор по умолчанию и имеет методы getter / setter для своих переменных-членов.  Например, экземпляры следующего класса могут быть легко сохранены в области: 
« `открытый класс java Country extends RealmObject {
личное строковое имя; частное международное население; общедоступная страна () {} public String getName () { вернуть имя; } public void setName (String name) { this.name = имя; } public int getPopulation () { возвращение населения; } public void setPopulation (int население) { this.population = населения; }
} « `
  Если вы хотите использовать переменную-член RealmObject в качестве первичного ключа, вы можете использовать аннотацию @PrimaryKey .  Например, вот как вы бы добавили первичный ключ с именем code в класс Country : 
« `java @PrimaryKey частный строковый код;
public String getCode () {код возврата; }
public void setCode (String code) {this.code = code; } « `
4. Создание транзакций
Хотя чтение данных из области очень просто, как вы увидите на следующем шаге, запись данных в нее немного сложнее. Realm совместим с ACID, и для обеспечения атомарности и согласованности Realm заставляет вас выполнять все операции записи внутри транзакции.
  Чтобы начать новую транзакцию, используйте метод beginTransaction .  Аналогично, чтобы завершить транзакцию, используйте метод commitTransaction . 
  Вот как вы можете создать и сохранить экземпляр класса Country : 
« `java myRealm.beginTransaction ();
// Создать объект Country country1 = myRealm.createObject (Country.class); // Устанавливаем его поля country1.setName ( "Норвегия"); country1.setPopulation (5165800); country1.setCode ( "НЕТ");
myRealm.commitTransaction (); « `
  Возможно, вы заметили, что country1 не был создан с помощью конструктора класса Country .  Чтобы Realm управлял экземпляром RealmObject , экземпляр должен быть создан с createObject метода createObject . 
  Если вы должны использовать конструктор, не забудьте использовать метод copyToRealm соответствующего объекта Realm прежде чем совершать транзакцию.  Вот пример: 
« `java // Создать объект Country country2 = new Country (); country2.setName ( «Россия»); country2.setPopulation (146430430); country2.setCode ( «RU»);
myRealm.beginTransaction (); Страна copyOfCountry2 = myRealm.copyToRealm (country2); myRealm.commitTransaction (); « `
5. Написание запросов
  Realm предлагает очень интуитивно понятный и удобный API для создания запросов.  Чтобы создать запрос, используйте метод where соответствующего объекта Realm и передайте класс интересующих вас объектов. После создания запроса вы можете получить все результаты, используя метод RealmResults , который возвращает объект RealmResults .  В следующем примере мы выбираем и распечатываем все объекты типа Country : 
  « `java RealmResults 
for (Страна c: результаты1) {Log.d («результаты1», c.getName ()); }
// Принты Норвегия, Россия « `
  Realm предлагает несколько точно названных методов, таких как beginsWith , endsWith , lesserThan и greaterThan , которые можно использовать для фильтрации результатов.  Следующий код показывает, как вы можете использовать метод greaterThan для выборки только тех объектов Country , population которых превышает 100 миллионов: 
  « `java RealmResults 
// Получает только Россию « `
  Если вы хотите, чтобы результаты запроса были отсортированы, вы можете использовать метод findAllSorted .  В качестве аргументов он принимает String указывающую имя поля для сортировки, и boolean определяющее порядок сортировки. 
  « `java // Сортировка по имени в порядке убывания RealmResults 
// Получаем Россию, Норвегия « `
Вывод
В этом кратком совете вы узнали, как использовать Realm в проекте Android. Вы видели, как легко создать базу данных Realm, хранить в ней данные и запрашивать ее. Чтобы узнать больше о Realm для Android, вы можете ознакомиться с его документацией по Java .