5 кращих ORM для Android



Як ви розумієте, ми маємо безпосереднє відношення до розробки додатків для Android, адже саме ця ОС встановлена на YotaPhone. І цим постом ми відкриваємо серію публікацій, в яких будемо висвітлювати різні аспекти розробки додатків під Android, ділитися досвідом, як своїм, так і інших фахівців. До речі, деякий час тому ми вже писали про SDK і особливості архітектури YotaPhone, що теж почасти перегукується з темою даної публікації: повністю розроблена нами SDK побудована за принципами, аналогічними стандартної SDK для Android, щоб дати розробникам інтуїтивно зрозумілі інструменти.

Якщо ви розробляєте програми під Android, то вам, швидше за все, потрібно десь зберігати дані. Ви можете вибрати один з хмарних сервісів (у цьому випадку зручно користуватися SyncAdapterабо скористатися вбудованою SQLite-базою даних. У другому випадку вам доведеться вибрати між записом SQL-запитів за допомогою Content Provider (якщо ви плануєте використовувати дані декількома додатками) або ORM.

У цьому пості ми розглянемо деякі з Android ORM, які ви можете використовувати в своїх додатках.

OrmLite

Мабуть, це перший ORM, який приходить в голову. Однак це не 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 methods setter
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;
}
}


Це open source-проект, ви можете знайти його на GitHub. За більш докладною інформацією можна звернутися до офіційної документації.

SugarORM

Цей ORM створювався саме для Android. У комплекті поставляється API, який легко вивчити і запам'ятати. Він може сам створювати необхідні таблиці і містить прості методи формування зв'язків типу «один-з-одним» і «один-до-багатьма». Також SugarORM полегшує операції створення, читання, оновлення та видалення (CRUD) за допомогою всього лише трьох функцій:
save()
,
delete()
та
find()
або
findById()
).
Щоб використовувати SugarORM у вашому додатку, потрібно в
AndroidManifest.xml
додати чотири тега
meta-data
:

<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, GreenDAO майже в 4,5 рази швидше:



За розміром він менше всього на 100 Кб, що не має особливого значення.
Подивитися приклади використання GreenDAO можна туториале, що використовує Android Studio. Також бажаючі можуть ознайомитися з кодом проекту на GitHub і вивчити документацію.

ActiveAndroid

Як і багато інших ORM, ActiveAndroid допомагає зберігати і витягувати записи з SQLite без створення SQL-запитів.

Для використання ActiveAndroid потрібно додати jar-файл у теку
/libs
. Як сказано в початковій інструкції, потрібно скопіювати вихідний код GitHub і скомпілювати з допомогою Maven. Після підключення ActiveAndroid до вашого проекту, додайте
AndroidManifest.xml
теги
meta-data
:

<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
}
}


Тепер ви можете, використовуючи анотації, створювати моделі як 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, для більш складних способів застосування вивчіть документацію проекту.

Realm

Останній ORM в нашому огляді, Realm написаний на С++ і запускається прямо на вашому пристрої (без інтерпретації), що забезпечує дуже високу продуктивність. Код версії для iOS, якщо це комусь цікаво, можна знайти на Github. Також на офсайті ви можете знайти приклади використання Realm на мові Objective-C і Swift.

Висновок

Звичайно, це далеко не єдині ORM, існуючі в природі. За рамками даного огляд залишилися, наприклад, Androrm і ORMDroid. Безсумнівно, кожен розробник повинен вміти працювати з SQL, але створення запитів — заняття нудне і лінива, так чому б не використовувати для автоматизації процесу один з безлічі готових ORM? Вони можуть істотно спростити вашу роботу.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.