Рубрики
Без рубрики

Вступление в базу данных царства

Первая база данных, построенная из заземления, чтобы запустить непосредственно внутри телефонов, таблеток и носимых устройств. Tagged с Android, iOS, Xamarin, JavaScript.

В настоящее время у нас есть много вариантов при решении выбора решения базы данных. У нас есть разные привлекательные варианты, каждый из которых имеет свои сильные и слабые стороны. Я обнаружил, что я обнаружил, что база данных Realm. База данных Realm может использоваться разработчиками Android, iOS, React и даже Xamarin.

Что царство 🤔

Большинству приложений сегодня потребуются какие -то постоянные данные, сортирующие их обычно включают в себя приложение более сложным и добавляет больше строк кода. Многие инженерные организации слишком знакомы с болью от повышенной сложности развития, что приводит к более длинным циклам, перегруженным ресурсам и громоздкой кодовой базе. Realm, наряду с другими новыми решениями баз данных, решает эту проблему сложности.

Realm упрощает архитектуру вашего приложения, предоставляя вам очень мощные функции. Платформа Realm на самом деле состоит из двух основных компонентов. База данных Realm и сервер объектов Realm. Согласно официальной документации, эти два компонента работают совместно для автоматической синхронизации данных, позволяющих множество вариантов использования, от автономных приложений до сложных интеграций бэкэнд. Я не собираюсь освещать сервер объектов Realm в этой статье, поэтому вы можете прочитать больше о сервере объектов Realm Здесь Анкет

Одним из ключевых факторов, которые делают Realm настолько особенным, является тот факт, что он был построен для наших современных требований мобильного развития, многие из используемых нами решений не были предназначены для телефонов, таблеток или носимых устройств:

В течение очень долгого времени SQLite был нашим основным выбором для настойчивости на мобильных устройствах, и даже если он не используется непосредственно, он используется многими библиотеками, которая обеспечивает удобную обертку вокруг нее, такую как Couchbase Lite, основные данные, Ormlite и т. Д.

Realm также может похвастаться скоростью, согласно документации, Realm быстрее, чем даже сырой SQLite для общих операций, сохраняя при этом чрезвычайно богатый набор функций.

Realm также проста в использовании, вот несколько примеров кодов того, как будут выглядеть основные транзакции сферы:

Для Java:

public class Dog extends RealmObject {
  public String name;
  public int age;
}

Dog dog = new Dog();
dog.name = "Rex";
dog.age = 1;

Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealm(dog)
realm.commitTransaction();

RealmResults pups = realm.where(Dog.class)
                               .lessThan("age", 2)
                               .findAll();

Для Swift:

class Dog: Object {
  @objc dynamic var name = ""
  @objc dynamic var age = 0
}

let dog = Dog()
dog.name = "Rex"
dog.age = 1

let realm = try! Realm()
try! realm.write {
  realm.add(dog)
}

let pups = realm.objects(Dog.self).filter("age < 2")

Для JavaScript:

class Dog {}

Dog.schema = {
  name: 'Dog',
  properties: {
    name: 'string',
    age: 'int',
  }
};

let realm = new Realm();
realm.write(() => {
  realm.create('Dog', {name: 'Rex', age: 1});
});

let pups = realm.objects('Dog').filtered('age < 2');

Для Xamarin:

public class Dog : RealmObject 
{
  public string Name { get; set; }
  public int Age { get; set; }
}

var realm = Realm.GetInstance();
realm.Write(() => 
{
  realm.Add(new Dog
  {
    Name = "Rex",
    Age = 1
  });
});

var pups = realm.All().Where(d => d.Age < 2);

Начало работы 😁

Мы собираемся создать очень простое приложение с помощью базы данных Realm. Это будет приложение для Android. Я постараюсь сделать это настолько простым, насколько я могу, чтобы каждый мог относиться к нему и реализовать его на любой платформе, которую они хотят.

Приложение, которое мы собираемся сделать, просто выполняет основные операции базы данных, это просто для того, чтобы дать вам обзор того, чего ожидать при работе с Realm.

У нас есть представление EditText для имени и возраста пользователя, которое будет вставлено в базу данных. Тогда ниже эта кнопка добавления, которая вставляет имя пользователя и возраст в базу данных. Есть также фильтр Кнопка, которая запрашивает базу данных для конкретных пользователей.

Первый шаг 🔥

Добавьте зависимость пути класса в файл Build.Gradle Build.Gradle.

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'

        classpath "io.realm:realm-gradle-plugin:5.1.0" //todo (1) add realm dependency

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

Второй шаг 🔥

Примените плагин Arlem-Android в верхнюю часть файла Level Application Build.Gradle.

apply plugin: 'com.android.application'

apply plugin: 'realm-android' //todo (2) add realm plugin

android {
    compileSdkVersion 27
    defaultConfig {
...

Определите модельный класс

Определите свой класс модели путем расширения RealMobject. Это похоже на ваши повседневные уроки POJO.

import io.realm.RealmObject;

//todo (3) Define your model class by extending RealmObject
public class User extends RealmObject{
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

Инициализировать царство

Чтобы начать, вам нужно будет инициализировать сферу, это необходимо только один раз на приложение, поэтому хорошее место для этого находится в Oncreate.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        //todo (4) Initialize Realm (just once per application)
        Realm.init(this);

        //todo (5) Get a Realm instance for this thread
        Realm realm = Realm.getDefaultInstance();
...

Пишет 🔥

Так что теперь все установлено и готово. Следующий шаг – добавить нового пользователя с именем и возрастом. Они добавляются, нажав кнопку «Добавить», как показано на диаграмме выше. Идентификатор для просмотров EditText имя , возраст являются name_txt и age_txt соответственно, в то время как идентификатор для кнопки – add_btn .

   add_btn.setOnClickListener(v -> {
            // write operations in Realm must be wrapped in transactions.
            realm.beginTransaction();
            User user = realm.createObject(User.class); //todo  Create a new object
            user.setName(name_txt.getText().toString()); //todo get user name from Edittext and store in user object
            user.setAge(Integer.valueOf(age_txt.getText().toString())); //todo get user age from Edittext and store in user object
            realm.commitTransaction();
            // commit transaction

            Toast.makeText(this, "User added", Toast.LENGTH_LONG).show();
            clearText();
        });

При начале операции записи царства она должна быть завершена в транзакции. По сути, в конце операции записи вы можете либо совершить транзакцию, либо отменить ее. Компания транзакции записывает все изменения в диск. Если вы отмените транзакцию записи, все изменения отбрасываются.

Если вы заметили, первые образцы в этой статье использовались CopyToreAlm () Чтобы добавить новый объект, оба метода будут вставлять данные в базу данных.

В приведенном выше коде мы просто создали новый объект из пользовательского класса, который расширяет RealMobject , мы устанавливаем значения и вуаля! Мы вставили эти данные. Я не скрывал от вас дополнительного кода или класса, это действительно все, что нужно для выполнения операции записи.

Запросы

Итак, теперь, когда мы можем вставить наши прекрасные данные, следующий вопрос: как мы их выясните 🤔. Ну, если вы думали, что процесс вставки данных выглядел круто, подождите и посмотрите, как мы их извлекаем. Предполагается, что вы хотели получить всех пользователей, чей возраст был менее чем 45, так будет выглядеть этот запрос:

        RealmResults result = realm.where(User.class)
                            .lessThan("age", 45)//find all users with age less than 45
                            .findAll();//return all result that reach criteria

Теперь разве это не великолепно? После этого вы можете пройти через результаты сферы и получить значения, например:

    StringBuilder stringBuilder = new StringBuilder();
                    for (int i = 0; i < result.size(); i++) {
                        stringBuilder.append(result.get(i).getName() + "  ");
                    }

Я только что поцарапал поверхность, царство может сделать гораздо больше, чем я продемонстрировал, это было просто для того, чтобы стать введением. Вы можете проверить Документация Для получения дополнительной информации о запросах, фильтрации, многопоточной тестировании, тестировании и многом другом.

Вы можете найти полный исходный код примера приложения выше:

Lemubit/realmexample

Простой проект, демонстрирующий, как использовать базу данных Realm для разработки Android.

Простой проект, демонстрирующий, как использовать базу данных Realm для разработки Android.

Оригинал: “https://dev.to/lemuelogbunude/intro-to-realm-database-1g3o”