- PVSM.RU - https://www.pvsm.ru -

Как вы понимаете, мы имеем самое непосредственное отношение к разработке приложений для Android, ведь именно эта ОС установлена на YotaPhone. И этим постом мы открываем серию публикаций, в которых будем освещать различные аспекты разработки приложений под Android, делиться опытом, как своим, так и других специалистов. Кстати, некоторое время назад мы уже писали об SDK и особенностях архитектуры YotaPhone, что тоже отчасти перекликается с темой данной публикации: полностью разработанная нами SDK построена по принципам, аналогичным стандартной SDK для Android, чтобы дать разработчикам интуитивно понятные инструменты.
Если вы разрабатываете приложения под Android, то вам, скорее всего, нужно где-то хранить данные. Вы можете выбрать один из облачных сервисов (в этом случае удобно пользоваться SyncAdapter [1]) или воспользоваться встроенной SQLite-базой данных. Во втором случае вам придётся выбрать между записью SQL-запросов с помощью Content Provider (если вы планируете использовать данные несколькими приложениями) или ORM [2].
В этом посте мы рассмотрим некоторые из Android ORM, которые вы можете использовать в своих приложениях.
Пожалуй, это первый ORM [3], который приходит в голову. Однако это не Android ORM, а Java ORM с поддержкой SQL-баз. Его можно использовать везде, где применяется Java, например, в JDBC-соединениях [4], Spring [5]и — 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;
}
}
Это open source-проект, вы можете найти его на GitHub [6]. За более подробной информацией можно обратиться к официальной документации [7].
Этот 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 можно в его документации [8].
Если вам необходима высокая производительность, то обязательно присмотритесь к GreenDAO [9]. Как сказано на их сайте, «большинство сущностей может быть добавлено, обновлено или загружено с производительностью несколько тысяч операций в секунду [10]». И если бы авторы лукавили относительно возможностей своего детища, то оно вряд ли было бы использовано в этих всем известных приложениях [11]. По сравнению с тем же OrmLite, GreenDAO почти в 4,5 раза быстрее:

По размеру он меньше всего на 100 Кб, что не имеет особого значения.
Посмотреть примеры использования GreenDAO можно в туториале [12], использующем Android Studio. Также желающие могут ознакомиться с кодом проекта на GitHub [13]и изучить документацию [14].
Как и многие другие ORM, ActiveAndroid [15]помогает хранить и извлекать записи из SQLite без создания SQL-запросов.
Для использования ActiveAndroid нужно добавить jar-файл в папку /libs. Как сказано в начальной инструкции [16], нужно скопировать исходный код с GitHub [17]и скомпилировать с помощью Maven [18]. После подключения 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, для более сложных способов применения изучите документацию [15]проекта.
Последний ORM в нашем обзоре, Realm [19]написан на С++ и запускается прямо на вашем устройстве (без интерпретации), что обеспечивает очень высокую производительность. Код версии для iOS, если это кому интересно, можно найти на GitHub [20]. Также на офсайте вы можете найти примеры использования Realm на языках Objective-C и Swift.
Конечно, это далеко не единственные ORM, существующие в природе. За рамками данного обзор остались, например, Androrm [21]и ORMDroid [22]. Несомненно, каждый разработчик должен уметь работать с SQL, но создание запросов — занятие скучное и ленивое, так почему бы не использовать для автоматизации процесса один из множества готовых ORM? Они могут существенно упростить вашу работу.
Автор: YotaDevices
Источник [23]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/orm/73821
Ссылки в тексте:
[1] SyncAdapter: http://developer.android.com/reference/android/content/AbstractThreadedSyncAdapter.html
[2] ORM: http://ru.wikipedia.org/wiki/ORM
[3] ORM: http://ormlite.com/sqlite_java_android_orm.shtml
[4] JDBC-соединениях: http://www.oracle.com/technetwork/java/javase/jdbc/index.html
[5] Spring : http://spring.io/
[6] GitHub: https://github.com/j256/ormlite-android
[7] документации: http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite.html
[8] документации: http://satyan.github.io/sugar/getting-started.html
[9] GreenDAO: http://greendao-orm.com/
[10] несколько тысяч операций в секунду: http://greendao-orm.com/2011/10/23/current-performance-figures/
[11] известных приложениях: http://www.appbrain.com/stats/libraries/details/greendao/greendao
[12] туториале: http://blog.surecase.eu/using-greendao-with-android-studio-ide/
[13] GitHub : https://github.com/greenrobot/greenDAO
[14] документацию: http://greendao-orm.com/documentation/
[15] ActiveAndroid : http://www.activeandroid.com/
[16] начальной инструкции: https://github.com/pardom/ActiveAndroid/wiki/Getting-started
[17] GitHub : https://github.com/pardom/ActiveAndroid
[18] Maven: http://maven.apache.org/
[19] Realm : http://realm.io/
[20] GitHub: https://github.com/realm/realm-cocoa
[21] Androrm : http://www.androrm.com/
[22] ORMDroid: https://github.com/roscopeco/ormdroid
[23] Источник: http://habrahabr.ru/post/242559/
Нажмите здесь для печати.