Статьи

5 лучших Android ORM

Если вы разрабатываете приложение для Android, вам, вероятно, нужно где-то хранить данные. Вы можете выбрать облачную службу (в этом случае было бы неплохо использовать SyncAdapter ) или сохранить ваши данные во встроенной базе данных SQLite. Если вы выберете второй вариант, вам придется выбирать между написанием SQL-запросов, использованием контент-провайдера (полезно, если вы хотите поделиться своими данными с другими приложениями) или использованием ORM .

В этой статье я расскажу о некоторых Android ORM, которые вы можете использовать в своем приложении.

OrmLite

OrmLite — первая Android ORM, которая приходит мне в голову. Однако OrmLite — это не Android ORM, это Java ORM с поддержкой баз данных SQL. Его можно использовать везде, где используется Java, например, соединения JDBC , Spring , а также Android.

Он интенсивно использует аннотации, такие как @DatabaseTable@DatabaseField

Простой пример использования OrmLite для определения таблицы будет выглядеть примерно так:

 @DatabaseTable(tableName = "users")
public class User {
    @DatabaseField(id = true)
    private String username;
    @DatabaseField
    private String password;

    public User() {
        // ORMLite needs a no-arg constructor
    }
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    // Implementing getter and setter methods
    public String getUserame() {
        return this.username;
    }
    public void setName(String username) {
        this.username = username;
    }
    public String getPassword() {
        return this.password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

OrmLite для Android имеет открытый исходный код, и вы можете найти его на GitHub . Для получения дополнительной информации читайте официальную документацию здесь .

SugarORM

SugarORM — это ORM, созданный только для Android. Он поставляется с API, который прост в освоении и легко запоминается. Он сам создает необходимые таблицы, дает вам простые методы создания отношений один-к-одному и один-ко-многим, а также упрощает CRUD, используя только 3 функции: save()delete()find()findById()

Настройте приложение на использование SugarORM, добавив эти четыре meta-dataAndroidManifest.xml

 <meta-data android:name="DATABASE" android:value="my_database.db" />
<meta-data android:name="VERSION" android:value="1" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain" />

Теперь вы можете использовать этот ORM, расширив его в классы, которые нужно превратить в таблицы, например так:

 public class User extends SugarRecord<User> {
    String username;
    String password;
    int age;
    @Ignore
    String bio; //this will be ignored by SugarORM

    public User() { }

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

Таким образом, добавление нового пользователя будет:

 User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database

Удаление всех пользователей в возрасте 19 лет будет:

 List<User> nineteens = User.find(User.class,"age = ?",new int[]{19});
foreach(user in nineteens) {
    user.delete();
}

Для получения дополнительной информации читайте онлайн-документацию SugarORM.

GreenDAO

Что касается производительности, «быстрый» и GreenDAO являются синонимами. Как указано на его веб-сайте, «большинство объектов могут быть вставлены, обновлены и загружены со скоростью несколько тысяч объектов в секунду » . Если бы это было не так хорошо, эти приложения не использовали бы его. По сравнению с OrmLite это почти в 4,5 раза быстрее.

ГринДАО против ОрмЛайт
ГринДАО против ОрмЛайт

Говоря о размере, он меньше 100 КБ, поэтому не сильно влияет на размер APK.

Следуйте этому руководству , которое использует Android Studio, чтобы показать использование GreenDAO в приложении Android. Вы можете просмотреть исходный код GreenDAO на GitHub и прочитать официальную документацию GreenDAO .

Активный Android

Как и другие ORM, ActiveAndroid помогает хранить и извлекать записи из SQLite без написания SQL-запросов.

Включение ActiveAndroid в ваш проект предполагает добавление файла jar/libs Как указано в Руководстве по началу работы , вы можете клонировать исходный код из GitHub и скомпилировать его с помощью Maven . После включения вы должны добавить эти meta-dataAndroidManifest.xml

 <meta-data android:name="AA_DB_NAME" android:value="my_database.db" />
<meta-data android:name="AA_DB_VERSION" android:value="1" />

После добавления этих тегов вы можете вызывать ActiveAndroid.initialize()

 public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActiveAndroid.initialize(this);

        //rest of the app
    }
}

Теперь, когда приложение настроено на использование ActiveAndroid, вы можете создавать Модели как классы Java с помощью Annotations

 @Table(name = "User")
public class User extends Model {
    @Column(name = "username")
    public String username;

    @Column(name = "password")
    public String password;

    public User() {
        super();
    }

    public User(String username,String password) {
        super();
        this.username = username;
        this.password = password;
    }
}

Это простой пример использования ActiveAndroid. Документация поможет вам лучше понять использование ActiveAndroid ORM.

область

Наконец, Realm — это еще не появившаяся ORM для Android, которая существует только в настоящее время. Он построен на C ++ и работает непосредственно на вашем оборудовании (не интерпретируется), что делает его действительно быстрым. Код для iOS с открытым исходным кодом, и вы можете найти его на GitHub .

На веб-сайте вы найдете несколько вариантов использования Realm в Objective-C и Swift, а также регистрационную форму для получения последних новостей для версии Android.

Заключительные слова

Это не единственные Android ORM на рынке. Другими примерами являются Androrm и ORMDroid .

Знание SQL — это навык, которым должен обладать каждый разработчик, но написание SQL-запросов скучно, особенно когда существует так много ORM. Когда они делают вашу работу проще, почему бы не использовать их в первую очередь?

Как насчет тебя? Какой Android ORM вы используете? Прокомментируйте свой выбор ниже