Если вы разрабатываете приложение для 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-data
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, расширив его в классы, которые нужно превратить в таблицы, например так:
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-data
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()
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 вы используете? Прокомментируйте свой выбор ниже