5 лучших ORM для Android

Если вы разрабатываете приложения для Android, то вам, скорее всего, нужно хранить данные. Если данных много, то для этого хорошо подойдет база данных SQLite. Для хранения данных в БД вам придется выбирать между SQL-запросами, используя Content Provider, или с помощью ORM .

ORM (англ. object-relational mapping, рус. объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Существуют как проприетарные, так и свободные реализации этой технологии.ORM (англ. object-relational mapping, рус. объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных».

Википедия

В этой статье рассмотрю некоторые из ORM-библиотек, которые вы можете использовать в своих будущих проектах.

OrmLite

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

Аннотация @DatabaseTable служит для определения класса как таблицы, а аннотация @DatabaseField должна быть над каждым полем в классе.

Простой пример использования OrmLite

@DatabaseTable(tableName = "users")
public class User {
    @DatabaseField(id = true)
    private String username;
    @DatabaseField
    private String password;
 
    public User() {
        // ORMLite нуждается в конструкторе без аргументов
    }
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
 
    // геттеры и сеттеры
    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, который легко запомнить. Всего есть 4 метода: save(), delete() and find() (or findById()).

Настроим приложение, чтобы использовать SugarORM, добавив мета-данные AndroidManifest.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, унаследовав нужные классы от SugarRecord

public class User extends SugarRecord<User> {
    String username;
    String password;
    int age;
    @Ignore
    String bio; //это будет проигнорировано 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();
}

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

GreenDAO

Когда дело доходит до производительности, ‘быстрый’ и GreenDAO являются синонимами. На сайте библиотеки говорится, что “большинство объектов могут быть вставлены, обновлены и загружены со скоростью нескольких тысяч объект в секунду”. Если это не так уж хорошо, эти приложения просто не станет им пользоваться. По сравнению с OrmLite, это почти в 4,5 раза быстрее. Эту библиотеку используют довольно известные приложения такие как Pinterest, Path, WiFi Map Pro и другие. Эта библиотека почти в 4,5 раза быстрее OrmLite.

greenDAO-performance

greenDAO против OrmLite

Библиотека весит меньше 100 килобайт, что не сильно повлияет на размер APK.

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

Active Android

Как и другие ORM, ActiveAndroid позволяет хранить и извлекать записи из SQLite без написания SQL-запросов. Можно подключить ActiveAndroid добавив jar-файл в папку /libs вашего проекта.

После подключения его, вы должны добавить эти  мета-данные в  AndroidManifest.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() в вашем Activity:

public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActiveAndroid.initialize(this);
 
        //rest of the app
    }
}

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

@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 дальше.

Заключение

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

Источник: 5 of the Best Android ORMs

Комментарии:

1 Comment

  1. Pingback: Использование Retrofit с ActiveAndroid | Java-Help

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *